我的docker-compose.yml文件中提供以下服务:
flyway:
image: boxfuse/flyway:latest-alpine
command: -url=jdbc:postgresql://yurldb:5432/yurldb -schemas=public -user=postgres -password=somepassword migrate
networks:
- yunet
volumes:
- ./flyway:/flyway/sql
restart: on-failure
depends_on:
- yurldb
我的资源包中只有一个迁移:
当我使用docker compose运行服务时(docker-compose up -d --build flyway)
flyway创建flyway_schema_history表,但不创建迁移中定义的表。如果我查看日志,则会看到以下消息:
Flyway Community Edition 5.2.4 by Boxfuse Database: jdbc:postgresql://yurldb:5432/yurldb (PostgreSQL 10.13) Successfully validated 0 migrations (execution time 00:00.011s) Current version of schema "public": << Empty Schema >> Schema "public" is up to date. No migration necessary.
迁移不会触发。这是为什么?我不确定我缺少什么。我在正确的程序包中进行了迁移,并且里面的SQL是正确的(否则将存在某种语法错误)。它只是没有检测到该迁移。任何的想法?
更新
我只是注意到,当我运行该命令时,在包结构中会创建一个小目录。不知道是什么:
我还要添加另一张图片,以显示项目的整体结构:
更新2
使用卷映射
./src/main/resources/db.migration:/flyway/sql
在我的包结构中生成了另一个目录:最佳答案
将您的映射更改为此./src/main/resources/db/migration:/flyway/sql
使用db.migration
会使Docker用该名称创建,如果db目录中仅包含目录,则Intellij仅将db/migration
目录像软件包名称db.dmigration
一样显示。
关于java - 从docker-compose使用时,flyway不会拾取迁移,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62244176/