在CI / CD中使用Flyway在Docker中填充/植入Postgres DB,然后进行标记并发布新的Docker映像以用于测试

时间:2018-10-16 19:08:17

标签: postgresql docker docker-compose flyway

我想开始使用Flyway对数据库更改进行版本控制。我正在尝试使用种子数据,TAG创建Postgres Docker容器,并发布该Docker映像以用于自动化测试。

我尝试使用docker-compose,但是在Flyway运行之后,我还没有找到TAG进行发布的方法。

带有测试项目的存储库 https://github.com/bigboy1122/flyway_postgres

这是我创建的一个docker-compose

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

随着数据库变化的发生,我想要的想法是,我想自动构建一个新的轻量级测试数据库,并更新整个企业中的持久化数据库。

0 个答案:

没有答案