opened image

How to install PostgreSQL and pgAdmin in Docker

In this article, we will look at how to install PostgreSQL and the pgAdmin4 panel in a Docker container using docker-compose.
 

Let's install Docker

But first, we need to update the OS packages. 
 

apt update

We will install the necessary packages and add a new repository:
 

apt install apt-transport-https ca-certificates curl gnupg-agent software-properties-common

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

We will update the packages with the new repository:
 

apt update

Now let's install Docker itself.
 

apt-get install docker-ce docker-ce-cli containerd.io

Let's check the version:
 

docker --version



Let's check the status:

 

 

 

systemctl status docker

 



If it hasn't started, we start it:

 

 

 

 

systemctl start docker

 


And add it to autostart.

 

 

 

 

systemctl enable docker

 


 

 

Let's install Docker-Compose

 

 

 

 

curl -L "https://github.com/docker/compose/releases/download/1.25.5/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

 


We set the execution permissions. 

 

 

 

 

chmod +x /usr/local/bin/docker-compose

 


Let's check how Docker-Compose was installed:

 

 

 

 

docker-compose --version

 



Let's create a *.yaml file for Docker-Compose.

To keep track of what we have installed in the future, let's create a separate folder for this project in the /home directory and navigate to it.

 

 

 

 

mkdir /home/postgres && cd /home/postgres

 

You can also use another directory  to place this and other projects. 

We will use the repository to create the docker-compose.yaml file at the link https://hub.docker.com/_/postgres

Create a file docker-compose.yaml or docker-compose.yml,

 

 

 

 

vim docker-compose.yaml

 

And add the following code to it:

 

 

 

 

version: '3.8'
services:
  db_postgres:
    image: postgres
    container_name: postgres
    restart: always
    environment:
      POSTGRES_USER: root
      POSTGRES_PASSWORD: root
      POSTGRES_DB: test_db
    ports:
      - "54320:5432"
    volumes:
      - local_pgdata:/var/lib/postgresql/data
  pgadmin4:
    container_name: pgadmin4
    image: dpage/pgadmin4
    restart: always
    environment:
      PGADMIN_DEFAULT_EMAIL: [email protected]
      PGADMIN_DEFAULT_PASSWORD: root
    ports:
      - "5050:80"
    volumes:
      - pgadmin-data:/var/lib/pgadmin
volumes:
  local_pgdata:
  pgadmin-data:

 


Where:

container_name: the name of your container;
POSTGRES_USER: User for the created database;
POSTGRES_PASSWORD: password for the user we are creating;
POSTGRES_DB: name of the database;
PGADMIN_DEFAULT_EMAIL: email/user for logging into pgadmin;
PGADMIN_DEFAULT_PASSWORD: password for the pgadmin user;
5050:80: port on which pgadmin works.

Let's run our script (for this you need to be in the directory where our file was created. In this case, it is /home/postgres):

 

 

 

 

docker-compose up -d 

 

Wait for the images to download and deploy.

Let's check:

 

 

 

 

docker-compose ps

 


or 

 

 

 

 

docker ps

 



Now to connect to the database, you can use the container's IP with port 54320, or the name of the container postgres with port 54320 (IP:54320 or postgres:54320) 

To view the logs, use the command: 

 

 

 

 

docker logs -f postgres

 



To configure pgadmin — open your browser and go to the address — http://YOUR_IP_SERVER:5050/. In the connection details, specify the hostname as the name of the PostgreSQL container or the email you specified in PGADMIN_DEFAULT_EMAIL and the password root

Now let's connect the PostgreSQL database server to pgadmin4.


Enter the data you specified in docker-compose.yaml


 Now you can create PostgreSQL databases in pgadmin4.

We also suggest considering other useful articles: