java - 从docker-compose使用时,flyway不会拾取迁移

标签 java postgresql docker docker-compose flyway

我的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

我的资源包中只有一个迁移:

enter image description here

当我使用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是正确的(否则将存在某种语法错误)。它只是没有检测到该迁移。任何的想法?

更新
我只是注意到,当我运行该命令时,在包结构中会创建一个小目录。不知道是什么:

enter image description here

我还要添加另一张图片,以显示项目的整体结构:

enter image description here

更新2
使用卷映射./src/main/resources/db.migration:/flyway/sql在我的包结构中生成了另一个目录:

enter image description here

最佳答案

将您的映射更改为此./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/

相关文章:

java - PostgreSQL 插入问号而不是 unicode 字符

ruby-on-rails - 如何在不调用 Model.last.id 的情况下在 Rails 中获取下一个可用的唯一 ID?

asp.net - Docker for Windows : ASP. NET 站点无法读取 Dockerfile 中定义的环境变量

security - 使用非官方镜像的 Docker 安全问题

Java内部类的使用和实例化

java - Eclipse 'generate entities from tables' 和 'many to one' 关系

java - 为什么 JPA 实体选择结果在每个偶数查询上都会发生变化?

postgresql - Postgresql 9.1 中 array_agg 的限制

node.js - 我无法使用 typescript 构建 docker image 错误

java - Solr 在 Websphere 8.5.5 上部署为 WAR 应用程序