Использование Flyway в CI / CD для заполнения / заполнения базы данных Postgres в Docker, затем TAG и публикации нового образа Docker, который будет использоваться для тестирования - PullRequest
0 голосов
/ 16 октября 2018

Я хочу начать использовать Flyway для внесения изменений в нашу базу данных.Я пытаюсь создать контейнер Postgres Docker с засеянными данными, TAG и опубликовать образ докера для использования в автоматическом тестировании.

Я пытался использовать docker-compose, однако я не нашел пути к TAG ипубликовать после запуска Flyway.

Репозиторий с тестовым проектом https://github.com/bigboy1122/flyway_postgres

Вот созданный мной docker-композит

version: '3.7'
services:
  flyway:
    image: boxfuse/flyway
    restart: always
    command: -url=jdbc:postgresql://db:5432/foo -user='postgres' -password='test123' -schemas='bar' migrate
    volumes:
    - .:/flyway/sql
    depends_on:
    - db

  db:
    image: tgalati1122/flyway_seeded_postgres
    build:
      context: .
      dockerfile: ./Dockerfile
    restart: always
    environment:
      POSTGRES_PASSWORD: 'test123'
      POSTGRES_USER: 'postgres'
      POSTGRES_DB: 'foo'
    ports:
    - 5432:5432

  adminer:
    image: adminer
    restart: always
    ports:
    - 8080:8080
    depends_on:
    - db

Здесь я пытаюсь использовать функцию мультикомпоновки Docker.

В приведенном ниже примере база данных, как мне кажется, раскручивается, но у меня нет доступа к ней.

FROM postgres:10.5-alpine as donar
ENV PGDATA=/pgdata
ENV POSTGRES_PASSWORD='test123'
ENV POSTGRES_USER='postgres'
ENV POSTGRES_DB='foo'
EXPOSE 5432:5432
RUN /docker-entrypoint.sh --help


FROM debian:stretch-slim as build_tools
ENV FLWAY_VERSION='5.2.0
RUN set -ex; \
    if ! command -v gpg > /dev/null; then \
        apt-get update; \
        apt-get install -y --no-install-recommends \
            gnupg \
            dirmngr \
            wget \
        ; \
        rm -rf /var/lib/apt/lists/*; \
    fi
VOLUME flyway/sql
RUN wget --no-check-certificate https://repo1.maven.org/maven2/org/flywaydb/flyway-commandline/5.2.0/flyway-commandline-5.2.0-linux-x64.tar.gz -O - | tar -xz
RUN pwd; \
    ls -l; \
    cd flyway-5.2.0; \
    pwd; \
    ls -l; \
    sh ./flyway -url=jdbc:postgresql://localhost:5432/optins -user='postgres' -password='test123' -schemas='bar' migrate; \

FROM postgres:10.5-alpine
ENV PGDATA=/pgdata
ENV POSTGRES_PASSWORD='test123'
ENV POSTGRES_USER='postgres'
ENV POSTGRES_DB='foo'
EXPOSE 5432:5432
COPY --chown=postgres:postgres --from=donor /pgdata /pgdata

Идея, к которой я стремлюсь, когда происходят изменения базы данных,хотите автоматически создать новую облегченную тестовую базу данных, а также обновить сохраненные базы данных по всему предприятию.

...