Local PostgreSQL docker container with PgAdmin4

Zoltan Varadi
Nov 16, 2020

The other day, I had to do some quick data wrangling with some client’s data, decided to just dump their data and spin up a local PostgreSQL database.

In this tutorial, we will create a PostgreSQL database and access it from PgAdmin using docker-compose. In my opinion, docker compose provides the easiest way to have your Postres container and PgAdmin on the same network.

Contents of docker-compose.yml

version: "3"
services:
postgresql:
image: postgres:11.8
container_name: postgresql
ports:
- 5432:5432
volumes:
- ./postgres/init:/docker-entrypoint-initdb.d
environment:
POSTGRES_USER: root
POSTGRES_PASSWORD: root
POSTGRES_INITDB_ARGS: "--encoding=UTF-8"
hostname: postgres
restart: always
user: root
pgadmin4:
image: dpage/pgadmin4:4.27
container_name: pgadmin4
ports:
- 80:80
environment:
PGADMIN_DEFAULT_EMAIL: root@root.com
PGADMIN_DEFAULT_PASSWORD: root
hostname: pgadmin4
restart: always
tty: true

files in work directory

.
├── docker-compose.yml
└─── postgres
└── init
└── dumpfile.sql

The init folder can contain any backup files you have and want to load into the DB on start.

How to run

docker-compose up -d --force-recreate

Notice: Sometimes docker-compose might have some previous build cache that interferes. Hence, the — force-recreate argument.
Sometimes, it’s good to run the good old docker system prune --all command as well if you encounter any errors.

How to login to PgAdmin

Open your browser and access http://localhost (Container can be accessed on port 80 from outside)
You can login to PgAdmin with user root@root.com and password root .
The host name when you create a new server connection (your local database container) will be postgresql . You will be able to connect with user root and password root .

--

--