Flyway docker 将在通过 docker compose commit 完成迁移后自动重启

问题描述 投票:0回答:0

这是我第一次使用Flyway进行数据库迁移。它是解决我让整个团队使用相同数据库和示例数据的问题的好工具。

但是有个小问题。我使用 Docker 为数据库 (Mariadb)、phpMyAdmin 和 Flyway(社区版)设置我的环境。我想我没有错过任何

docker-compose.yml
的设置,但有时我的迁移不会启动,每次我的 flyway 完成迁移。我的 flyway 容器将
exit 1
开始重新启动。

我希望我的 flyway 容器在完成迁移后不会关闭。但是我发现 flyway 会在完成迁移后关闭容器。因此,如果容器肯定已关闭。有什么办法可以停止重启吗?

docker-compose.yml

services:
    mariadb:
      image: mariadb:10.10.2
      container_name: db
      hostname: mariadb
      restart: unless-stopped
      volumes:
        - ./init.sql:/docker-entrypoint-initdb.d/init.sql
        - ./database/data:/var/lib/mysql
        - ./database/backup:/backup
      environment:
        MYSQL_DATABASE: ${DB_DATABASE}
        MYSQL_ROOT_PASSWORD: ${DB_ROOT_PASSWORD}
        MYSQL_USER: ${DB_USERNAME}
        MYSQL_PASSWORD: ${DB_PASSWORD}
      # settings timezone for database
      command: --default-time-zone '+00:00'
      ports:
        - ${SQL_FORWARD_PORT}:3306
      healthcheck:
        test: "mysql -hlocalhost -u$DB_USERNAME -p$DB_PASSWORD $DB_DATABASE -e 'select 1'"
        interval: 1s
        timeout: 3s
        retries: 30
      platform: linux/amd64
  
    pma:
      image: phpmyadmin/phpmyadmin:5.2.0
      container_name: pma
      hostname: pma
      restart: unless-stopped
      environment:
        PMA_HOST: mariadb
      ports:
        - ${PMA_FORWARD_PORT}:80
      depends_on:
        mariadb: 
          condition: service_healthy
      platform: linux/amd64

    flyway:
      # use flyway Community edition docker
      image: flyway/flyway:9.16.1
      # use flyway Teams and Enterprise edition docker
      # image: redgate/flyway-teams:9.16.1
      container_name: flyway
      hostname: flyway
      restart: unless-stopped
      volumes:
        - ./flyway/sql:/flyway/sql
        - ./flyway/conf:/flyway/conf
        - ./flyway/drivers:/flyway/drivers
      command: migrate
      depends_on:
        mariadb: 
          condition: service_healthy
      platform: linux/amd64

我的目录结构如下 project directory structure

迁移完成没有任何错误,所以我没有显示我的 *.sql 文件。如果需要请告诉我。

希望有人能帮我QQ

我一开始用错了Docker镜像,还以为是license的问题。但是更改图像并不能解决问题。 我的迁移命名是

V**.***__xxx
,其中
**
代表
01 ~ 99
***
代表
001 ~ 999
。由于 Migrate 已正确实施。文件的命名可能不是重启我的容器的问题。

docker docker-compose flyway
© www.soinside.com 2019 - 2024. All rights reserved.