как создать Postgres Docker Container с всегда различной инициализацией файла дампа - PullRequest
0 голосов
/ 11 июня 2019

Короче говоря, мне нужно создать файл Docker для контейнера Docker, который будет: (по порядку)

  1. Загрузить файл дампа postgres из S3 Bucket
  2. Восстановить файл дампа в postgres в контейнере
  3. Дамп всех таблиц в CSV-файлы
  4. Переместить все файлы CSV в другое ведро S3

Когда этот док-контейнер вызывается с точкой входа, будет предоставлен путь s3 для загрузки файла дампа

Этот контейнер будет помещен в AWS Fargate и запущен Lambda

У меня есть докер-контейнер, который может загрузить файл дампа и загрузить файлы CSV на S3.

Мне нужно интегрировать в этот докер-контейнер экземпляр db postgres, чтобы выполнить восстановление и сбросить все таблицы.

Следующий скрипт можно использовать для выгрузки таблиц в csv после восстановления с использованием файла дампа.

SCHEMA=$1
DB=my_db


PGPASSWORD=password  psql -f create_pg_commands.psql -h localhost -p 5432 -U postgres

PGPASSWORD=password psql -d $DB < $SCHEMA -U postgres psql  -h localhost -p 5432 -U postgres

mkdir -p ./output/$SCHEMA

PGPASSWORD=password psql -h localhost -p 5432 -U postgres -Atc "select tablename from pg_tables where schemaname='$SCHEMA'" $DB |\
  while read TBL; do
    PGPASSWORD=password psql  -h localhost -p 5432 -U postgres -c "COPY $SCHEMA.$TBL TO STDOUT WITH CSV  HEADER" $DB > /output/$SCHEMA/$TBL.csv
  done

Я заблудился относительно того, как сделать все это в одном док-контейнере.

Как мне восстановить postgres db из файла дампа и запустить psql (или что-то еще необходимое) из контейнера, пока он работает?

...