Docker Compose PostgreSQL server
In one container start the Docker server, the other one will be the client that is built based on the Dockerfile
version: '3.8'
services:
client:
build: .
volumes:
- .:/opt
links:
- postgres
command: tail -f /dev/null
postgres:
image: postgres:latest
environment:
POSTGRES_USER: username
POSTGRES_PASSWORD: password
POSTGRES_DB: mydb
volumes:
- postgres-database-data:/var/lib/postgresql/data/
volumes:
postgres-database-data:
The Dockerfile is built on top of a plain Ubuntu image
FROM ubuntu:23.04
RUN apt-get update && \
apt-get install -y curl && \
apt-get install -y inetutils-ping && \
apt-get install -y postgresql-client && \
echo DONE
Start the two containers:
docker-compose up -d
Connect to the client container:
$ docker exec -it postgresql_client_1 bash
# psql -h postgres --username username -d mydb
It will ask for a password:
Password for user username:
type in password
psql (14.5 (Ubuntu 14.5-0ubuntu0.22.04.1), server 15.1 (Debian 15.1-1.pgdg110+1))
WARNING: psql major version 14, server major version 15.
Some psql features might not work.
Type "help" for help.
mydb=#
Alternativel, once inside the client docker container we can put the variable of the database in an environment variable and then we can run a command that will not wait for any input.
export PGPASSWORD=password
echo "SELECT CURRENT_TIME" | psql -h postgres -U username mydb