这是我第一次使用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
迁移完成没有任何错误,所以我没有显示我的 *.sql 文件。如果需要请告诉我。
希望有人能帮我QQ
我一开始用错了Docker镜像,还以为是license的问题。但是更改图像并不能解决问题。 我的迁移命名是
V**.***__xxx
,其中**
代表01 ~ 99
,***
代表001 ~ 999
。由于 Migrate 已正确实施。文件的命名可能不是重启我的容器的问题。