当数据库在 docker 容器上 运行 时,Flyway 找不到迁移

Flyway can't find migrations when database is run on docker container

我一直在关注 this tutorial 尝试使用 flyway 迁移脚本设置数据库。与本教程的唯一区别是我一直在尝试在 Spring 启动应用程序中使用它。出于某种原因,当我 运行 “docker-compose up” 时,我总是在终端中收到以下日志记录。

flyway_1 | Flyway Community Edition 7.5.3 by Redgate flyway_1 | Database: jdbc:postgresql://postgres:5432/db-name (PostgreSQL 12.2) flyway_1 | Successfully validated 0 migrations (execution time 00:00.041s) flyway_1 | WARNING: No migrations found. Are your locations set up correctly? flyway_1 | Current version of schema "public": << Empty Schema >> flyway_1 | Schema "public" is up to date. No migration necessary.

但是,我在src/main/resources/db/migration下有一个迁移脚本。我不确定为什么找不到它,因为默认情况下 flyway 似乎应该在这里寻找它们。

这是我的 docker-compose.yml 文件

version: '3'
services:
  flyway:
    image: flyway/flyway:7.5.3
    command: -configFiles=/flyway/conf/flyway.config -locations=filesystem:/flyway/sql -connectRetries=60 migrate
    volumes:
    - ${PWD}/src/main/java/resources/db/migration
    - ${PWD}/docker-flyway.config:/flyway/conf/flyway.config
    depends_on:
    - postgres
  postgres:
    image: postgres:12.2
    restart: always
    ports:
    - "5432:5432"
    environment:
    - POSTGRES_USER=example-username
    - POSTGRES_PASSWORD=pass
    - POSTGRES_DB=db-name

这是我的 docker-flyway.config 文件。

flyway.url=jdbc:postgresql://postgres:5432/db-name
flyway.user=example-username
flyway.password=pass
flyway.baselineOnMigrate=false

Flyway 文件需要有 .sql 扩展名。这里提到:https://flywaydb.org/documentation/concepts/migrations#naming

我发现我的 docker-compose.yml 文件中有一个卷映射写错了。我不完全理解映射本身,但是在复制 中的内容后,它 运行 迁移脚本正确。