Моя цель состоит в том, чтобы создать схему postgres с использованием миграции с миграционного пути и создать резервную копию всей базы данных с помощью Gitlab CICD. У меня проблема с доступом к интерфейсу командной строки postgres. Ниже мой .gitlab-ci.yml код
variables:
POSTGRES_DB: postgres
POSTGRES_USER: postgres
POSTGRES_PASSWORD: "postgres"
migrate:
image: java:8
services:
- postgres:latest
script:
- ./gradlew flywayMigrate
- export PGPASSWORD=$POSTGRES_PASSWORD
- psql -h "postgres" -U "$POSTGRES_USER" -d "$POSTGRES_DB" -c "select * from test"; // Not Working
Я знаю, что Postgres будет работать в отдельном контейнере. Но я хочу получить доступ к БД, чтобы взять Backup. Итак, я попробовал с этапами, у меня есть два этапа, называемые миграцией и резервным копированием. Этап миграции содержит миграцию с образа java, а этап Резервное копирование содержит резервную копию psql с изображением Postgres. Таким образом, два этапа не зависят друг от друга, поэтому переносите и резервная копия не синхронизируется c вместе.
Так что я решил следующий подход, который работает отлично.
migrations:
image:
name: boxfuse/flyway:5.2-alpine
entrypoint: [""]
before_script:
- echo "flyway.url=jdbc:postgresql://postgres:5432/" >> ${HOME}/flyway.conf
- echo "flyway.user=${POSTGRES_USER}" >> ${HOME}/flyway.conf
- echo "flyway.password=${POSTGRES_PASSWORD}" >> ${HOME}/flyway.conf
- echo "flyway.schemas=${POSTGRES_DB}" >> ${HOME}/flyway.conf
- apk update
- apk add postgresql-client
script:
- flyway migrate
- PGPASSWORD=$POSTGRES_PASSWORD psql -h "postgres" -U "$POSTGRES_USER" -d "$POSTGRES_DB" -c "select * from test";
services:
- postgres:latest
variables:
POSTGRES_DB: postgres
POSTGRES_USER: postgres
POSTGRES_PASSWORD: "postgres"
Но я хочу знать, как это сделать с первым подходом?