Короче говоря, мне нужно создать файл Docker для контейнера Docker, который будет: (по порядку)
- Загрузить файл дампа postgres из S3 Bucket
- Восстановить файл дампа в postgres в контейнере
- Дамп всех таблиц в CSV-файлы
- Переместить все файлы 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 (или что-то еще необходимое) из контейнера, пока он работает?