Skip to content

Instantly share code, notes, and snippets.

@przbadu
Last active May 28, 2022 16:21
Show Gist options
  • Save przbadu/da949634408b6171ad99eda40c352136 to your computer and use it in GitHub Desktop.
Save przbadu/da949634408b6171ad99eda40c352136 to your computer and use it in GitHub Desktop.
docker-postgresql-setup

Create docker-compose.yml file

version: "3"
services:
  db:
    image: "postgres"
    container_name: "my_postgres"
    ports:
      - "54320:5432"
    volumes:
      - db_data:/var/lib/postgresql/data
    environment:
      POSTGRES_USER: 'postgres'
volumes:
  db_data:

download and run container

docker-compose up

Or pass -d if you want to run this container as demonize

Run psql/pg_dump command as below:

docker exec -e PGPASSWORD=db-password -it my_postgres pg_dump --no-acl --no-owner -h host-name --dbname=dbname --table=table-name --data-only --user=username > ../databases/table-name.dump

In above command we are passing PGPASSWORD postgresql password as docker container's environment variable. If we don't pass password like this, then pg_dump command will prompt for password which is not prompted in cli, and above command might not be successful.

Copy file from host machine to docker

docker cp ../databases/latest.dump my_postgres:/latest.dump

Run pg_restore in docker postgresql

docker exec -it my_postgres psql -U postgres
> create database po_app_dev;
> \q
docker exec -it my_postgres pg_restore --verbose --clean --no-acl --no-owner -h -U postgres localhost -d po_app_dev /latest.dump 

Get docker container ip address

docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' my_postgres
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment