当数据库在 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 文件中有一个卷映射写错了。我不完全理解映射本身,但是在复制 中的内容后,它 运行 迁移脚本正确。
我一直在关注 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 文件中有一个卷映射写错了。我不完全理解映射本身,但是在复制