how do i backup a database in docker

To run pg_dump you can use docker exec command:

To backup:

docker exec -u <your_postgres_user> <postgres_container_name> pg_dump -Fc <database_name_here> > db.dump

To drop db (Don't do it on production, for test purpose only!!!):

docker exec -u <your_postgres_user> <postgres_container_name> psql -c 'DROP DATABASE <your_db_name>'

To restore:

docker exec -i -u <your_postgres_user> <postgres_container_name> pg_restore -C -d postgres < db.dump

Also you can use docker-compose analog of exec. In that case you can use short services name (postgres) instead of full container name (composeproject_postgres).

docker exec

docker-compose exec

pg_restore


Since you have

expose:     
 - "5432"

you can run

pg_dump -U <user> -h localhost -Fc <db_name> > 1.dump

pg_dump connects to 5432 port to make dump since it is listened by postgres in container you will dump db from container