postgres docker compose - ghdrako/doc_snipets GitHub Wiki

docker run --name basic-postgres --rm -e POSTGRES_USER=postgres -e POSTGRES_PASSWORD=postgres -e PGDATA=/var/lib/postgresql/data/pgdata -v /tmp:/var/lib/postgresql/data -p 5432:5432 -it postgres:14.1-alpine
docker exec -it basic-postgres /bin/sh
$ psql --username postgres

https://github.com/docker-library/docs/tree/master/postgres#initialization-scripts

  • for linux
mkdir ~/postgres-volume  
                    
docker run --name postgres \    
    -e POSTGRES_USER=postgres -e POSTGRES_PASSWORD=password \    
    -p 5432:5432 \    
    -v ~/postgres-volume/:/var/lib/postgresql/data \    
    -d postgres:latest   
  • for windows (powershell)
mkdir ~/postgres-volume  
docker run --name postgres `  
    -e POSTGRES_USER=postgres -e POSTGRES_PASSWORD=password `  
    -p 5432:5432 `  
    -v ${PWD}/postgres-volume:/var/lib/postgresql/data `  
    -d postgres:latest  

connect to postgres

docker exec -it postgres psql -U postgres
$ \conninfo
$ \q
docker cp my_sample_dataset.sql postgres:/home
docker exec -it postgres psql -U postgres -f /home/my_sample_data

conect to specific database in postgres

 docker exec -it postgres psql -U postgres -d  mydb

verify

$ docker container ls -f name=postgres
$ docker logs postgres
version: "3"
services:
  db:
    image: "postgres:latest"  "postgres:17-alpine"
    ports:
      - 5432:5432
    env_file:
      - .env
    environment:
      POSTGRES_USER: ${POSTGRES_USER:-postgres} # The PostgreSQL user (useful to connect to the database)
      POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-changeme} # The PostgreSQL password (useful to connect to the database)
      POSTGRES_DB: ${POSTGRES_DB:-} # The PostgreSQL default database (automatically created at first launch)
    healthcheck:
      test: ["CMD-SHELL", pg_ready -U username -d default_database"
      interval: 10s
      timeout: 5s
      retries: 5
    volumes:
      - postgres_data:/var/lib/postgresql/data

volumes:
  postgres_data:
.env:
POSTGRES_DB=mydb
POSTGRES_USER=myuser
POSTGRES_PASSWORD=p@$$w0rd