Flyway容器执行migrate后自动重启问题求助
问题解决:Flyway容器执行迁移后exit 1并自动重启
问题分析
Flyway的migrate命令是一次性执行任务,完成后容器会自动退出。你的配置中restart: unless-stopped会让容器在任何退出状态下都自动重启,而Flyway社区版的退出码规则里:
- 0 = 迁移成功,无新脚本执行
- 1 = 迁移成功,有新脚本被执行
- 2及以上 = 迁移失败
你遇到的exit 1属于正常的成功状态(迁移脚本已执行),但被restart策略触发了重复重启。
解决方案
1. 调整Flyway容器的重启策略
将Flyway服务的restart参数改为no,让容器执行完迁移后退出不再重启:
flyway: # use flyway Community edition docker image: flyway/flyway:9.16.1 container_name: flyway hostname: flyway restart: no # 替换原来的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
2. 验证迁移结果
执行以下命令查看Flyway容器日志,确认迁移是否成功:
docker logs flyway
如果日志中出现类似Successfully applied X migration(s) to schema的内容,说明迁移确实正常完成,exit 1是预期的成功状态码。
3. 额外说明
Flyway本身会在数据库中维护flyway_schema_history表,跟踪已执行的迁移脚本,即使后续手动重启Flyway容器,它也会自动跳过已执行的脚本,不会重复执行。
内容的提问来源于stack exchange,提问作者Crazyfire Lee
相关产品推荐
相关产品推荐

