Docker is an open-source containerization platform to run on Windows, Linux, and macOS. Basically, you can use pgAdmin as an alternate solution if you don’t like managing your database using the command-line interface. It's a web-based front-end for the PostgreSQL database server.
Here at Ibmi Media, as part of our Server Management Services, we regularly help our Customers to perform related Docker queries.
In this context, we shall look into how to install pgAdmin with Docker.
To begin, you should install Docker.
Follow the steps given below to install pgAdmin with Docker.
1. Install Docker Compose:
You can download Docker Compose binary file very easily with the following command:
$ sudo curl -L “https://github.com/docker/compose/releases/download/1.24.1/
docker-compose-$(uname -s)–$(uname -m)“ -o /usr/local/bin/docker-compose
Ubuntu/Debian/Linux Mint:
$ sudo apt install curl -y
CentOS/RHEL/Fedora:
$ sudo dnf install curl -y
Once docker-compose binary file is downloaded, run the following command:
$ sudo chmod +x /usr/local/bin/docker-compose
Now, check whether docker-compose command is working as follows:
$ docker-compose version
2. Set Up Docker Compose for the Project:
To begin, create a project directory (let's say ~/docker/pgdev) using the command:
$ mkdir -p ~/docker/pgdev
Then, navigate to the project directory ~/docker/pgdev as follows:
$ cd ~/docker/pgdev
Next, create a docker-compose.yaml file in the project directory ~/docker/pgdev and type in the following lines in the docker-compose.yaml file:
version: “3.7”
services:
db:
image: postgres:12.2
restart: always
environment:
POSTGRES_DB: postgres
POSTGRES_USER: admin
POSTGRES_PASSWORD: secret
PGDATA: /var/lib/postgresql/data
volumes:
– db-data:/var/lib/postgresql/data
ports:
– “5432:5432”pgadmin:
image: dpage/pgadmin4:4.18
restart: always
environment:
PGADMIN_DEFAULT_EMAIL: admin@linuxapt.com
PGADMIN_DEFAULT_PASSWORD: secret
PGADMIN_LISTEN_PORT: 80
ports:
– “8080:80”
volumes:
– pgadmin-data:/var/lib/pgadmin
links:
– “db:pgsql-server”
volumes:
db-data:
pgadmin-data:
Here, In this, 2 services db and pgadmin are created.
DB service will run the postgres:12.2 image in a Docker container.
Pgadmin service will run the dpage/pgadmin4:4.18 image (from DockerHub) in another Docker container.
In db service,
The POSTGRES_DB, POSTGRES_USER, POSTGRES_PASSWORD environment variables are used to set the default database name, admin username and admin user password for the PostgreSQL server respectively.
The PGDATA environment variable is use to configure the PostgreSQL server to store the data to /var/lib/postgresql/data directory of the container.
i. In pgadmin service,
The PGADMIN_DEFAULT_EMAIL, PGADMIN_DEFAULT_PASSWORD environment variables are used to set the login email and password of pgAdmin web interface respectively.
The PGADMIN_LISTEN_PORT is used to set the pgAdmin port 80 in the container.
In db service,
All the contents of the /var/lib/postgresql/data directory will svae permanently in the db-data volume.
ii. In the pgadmin service,
All the contents of the /var/lib/pgadmin directory will save permanently in the pgadmin-data volume.
In the db service,
The container port 5432 is mapping to the Docker host port 5432.
iii. In the pgadmin service,
The container port 80 is mapping to the Docker host port 8080.
iv. In the pgadmin service,
Ahostname alias pgsql-server to the db container is create. So, you can access the PostgreSQL server using pgsql-server as the hostname.
3. Start PostgreSQL server and pgAdmin.
Now, to start the db and pgadmin services, run the following command:
$ docker-compose up -d
The services should start in the background.
You can see the port 8080 and 5432 are open by the docker-proxy service by running the below command.
$ sudo netstat -tlpn
To see how the ports are mapped, run the following command:
$ docker-compose ps
For the db service, the Docker host port 5432 is mapping to the container TCP port 5432.
For the pgadmin service, the Docker host port 8080 is mapping to the container TCP port 80.
4. Access pgAdmin 4 or PostgreSQL server from Other Computers.
If you want to access pgAdmin 4 or PostgreSQL database server from another computer on your network, then you must know the IP address of your Docker host.
To find the IP address of your Docker host, run the following command:
$ ip
5. Access pgAdmin from Web Browser.
Now, you can easily access pgAdmin 4 from your web browser.
6. Access PostgreSQL from DataGrip.
You can also access your PostgreSQL database server from DataGrip IDE or any other SQL IDEs.
7. Stop PostgreSQL and pgAdmin.
To stop the db and pgadmin services, run the following command:
$ docker-compose down
The db and pgadmin services should be stopped.
8. Clean Up PostgreSQL and pgAdmin Data.
If you want to remove all the PostgreSQL database data and settings, and all the pgAdmin settings, you must remove the db-data and pgadmin-data volumes.
You can find the actual name of the data volumes with the following command:
$ docker volume ls
There are 2 volumes for the pgdev project, pgdev_db-data and pgdev_pgadmin-data.
Then, you can remove these volumes with the following command:
$ docker volume rm pgdev_db-data pgdev_pgadmin-data
This article covers how to go about installing pgAdmin with Docker. By using Docker, we don’t have to worry about the installation of the PostgreSQL or pgAdmin. Moreover, you can use Docker to run this project on macOS, Windows, and Linux distributions.
Database management via a command-line interface can be nerve-racking. To solve this issue, we can use a tool with an interface. The pgAdmin solves this problem. Moreover, Docker makes the entire process smoother.
To fix pgAdmin using Docker Installation issues:
Issue with following command,
$ docker run -p 80:80 \
-e PGADMIN_DEFAULT_EMAIL="atinesh.s@gmail.com" \
-e PGADMIN_DEFAULT_PASSWORD="admin" \
-d dpage/pgadmin4