Dockerized pgAdmin 4 & local Postgres server on Ubuntu 20.04
At this time of writing, pgAdmin4 is not available for installation on Ubuntu 20.04, due to an unresolved Python dependency. Until this is solved, or in case you want to run pgAdmin from a Docker container, here’s what worked for me. This assumes you already have Docker installed in your Ubuntu.
First, docker pull dpage/pgadmin4
to pull the image on your computer.
Next, I added the following command to my ~/.bash_aliases
so I can quickly run the container:
alias pgadmin-boot='docker run --add-host=database:YOUR_LOCAL_IPV4_ADDRESS -p 5050:80 -e "PGADMIN_DEFAULT_EMAIL=YOUR_PGADMIN_LOGIN_EMAIL" -e "PGADMIN_DEFAULT_PASSWORD=YOUR_PGADMIN_LOGIN_PASS" -d dpage/pgadmin4'
The YOUR_LOCAL_IPV4_ADDRESS
is the IP address of your computer on the local area network, assuming Postgres is running from your local machine.
Next, start pgAdmin by running pgadmin-boot
or the command above. You may need to restart your terminal so that the alias is loaded.
If everything went well until this point, you should be able to access pgAdmin4 at http://localhost:5050/browser/
and log in with the email and password you specified in the command above.
Next, from the ‘Quick Links’ section on the pgAdmin dashboard, you can add a new server. For the hostname use database
since we defined that earlier in the command above. The port is most likely 5432
. The username is most likely postgres
. The password is something you should know, otherwise see this comment on StackOverflow how to reset your postgres password. If you try to add the new server, you will most likely get an error notice about Postgres complaining about an IP not having access. That is the IP of your running pgAdmin docker container. Copy that IP, in my case it was 172.17.0.2
. Next, find your pg_hba.conf
file. To do that, you can run the following commands:
dragos@dragos-pc:~$ sudo -u postgres psql [sudo] password for dragos: psql (12.2 (Ubuntu 12.2-4)) Type "help" for help. postgres=# SHOW hba_file; hba_file ------------------------------------- /etc/postgresql/12/main/pg_hba.conf (1 row) postgres=# quit
You will need to edit the configuration file to add the docker IP address as trusted: sudo nano /etc/postgresql/12/main/pg_hba.conf
and add this line host all all 172.17.0.2/24 trust
to the ‘# IPv4 local connections:’ block. Restart postgres sudo service postgres restart
.
Now if you try to add the server in pgAdmin, it should succeed.
If you still can’t connect to the Postgres server, you may need to let Postgres know that it can accept connections from address other than ‘localhost’. To do that, sudo nano /etc/postgresql/12/main/postgresql.conf
and then find and uncomment the config for listen_addresses
amd add your YOUR_LOCAL_IPV4_ADDRESS
from earlier. It should look like this: listen_addresses = 'localhost,192.168.0.11'
.
If you found this helpful, let me know in the commentary section below 🙂