Alex
Alex

Reputation: 2805

run pg_dump in a docker container and output file to host

We typically have to pg_dump from multiple different versions of databases. I want to run the command inside a Docker container with the right Postgres version and have the dump output to my files rather than the container.

I thought I'd achieve it like so;

docker run -it postgres:9.6.6-alpine pg_dump --file backupFile.bak --dbname=CONNECTIONSTRING --verbose --format=c --blobs > backupFile.bak

however this just outputs the terminal output of the pg_dump command to a file, not the actual dump. I end up with a local file that's just the verbose log of the command.

What am I missing?

Upvotes: 2

Views: 7452

Answers (1)

sp0gg
sp0gg

Reputation: 4132

I can think of two options here:

  1. Mount a volume to a local folder and dump the file there. When the container exits, the file will still be there on the host. You wouldn't need to run the container interactively. The command might look something like this (not tested):

    docker run --rm -v <host_folder>:<container_folder> postgres:9.6.6-alpine pg_dump --file backupFile.bak --dbname=CONNECTIONSTRING --verbose --format=c --blobs
    

The backup file will still remain in <host_folder> after the container stops.

  1. Start the container as-is, run docker cp to pull the file out of the container to the local filesystem, then stop the container. Probably not as easy or efficient as option 1.

Upvotes: 9

Related Questions