запустить pg_dump в контейнере Docker и вывести файл на хост - PullRequest
0 голосов
/ 05 июня 2018

Мы обычно должны pg_dump из нескольких разных версий баз данных.Я хочу запустить команду внутри контейнера Docker с правильной версией Postgres и получить вывод дампа для моих файлов, а не для контейнера.

Я думал, что достигну этого так;

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

однако это просто выводит вывод терминала команды pg_dump в файл, а не на фактический дамп.Я получаю локальный файл, который представляет собой подробный журнал команды.

Что мне не хватает?

1 Ответ

0 голосов
/ 05 июня 2018

Я могу представить здесь два варианта:

  1. Смонтировать том в локальную папку и выгрузить туда файл.Когда контейнер выйдет, файл все равно будет там на хосте.Вам не нужно запускать контейнер в интерактивном режиме.Команда может выглядеть примерно так (не проверено):

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

Файл резервной копии останется в <host_folder> после остановки контейнера.

Запустите контейнер как есть, запустите docker cp, чтобы вытащить файл из контейнера в локальную файловую систему, затем остановите контейнер.Вероятно, не так просто и эффективно, как вариант 1.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...