无法让flyway docker识别卷中的本地文件

无法让flyway docker识别卷中的本地文件,flyway,Flyway,我试图使用Flyway在Docker容器中设置DB2测试/演示环境。我有一个运行在docker容器中的DB2映像,现在我正在尝试使用flyway来创建数据库环境。我可以连接到DB2Docker容器,创建DB2对象并用数据加载它们,但我正在寻找一种非技术用户实现这一点的方法(即克隆GitHub repo并发出单个docker run命令) Flyway Docker站点()表示它支持以下卷: | Volume | Description

我试图使用Flyway在Docker容器中设置DB2测试/演示环境。我有一个运行在docker容器中的DB2映像,现在我正在尝试使用flyway来创建数据库环境。我可以连接到DB2Docker容器,创建DB2对象并用数据加载它们,但我正在寻找一种非技术用户实现这一点的方法(即克隆GitHub repo并发出单个docker run命令)

Flyway Docker站点()表示它支持以下卷:

| Volume            | Description                                            |
|-------------------|--------------------------------------------------------|
| `/flyway/conf`    | Directory containing a flyway.conf                     |
| `/flyway/drivers` | Directory containing the JDBC driver for your database |
| `/flyway/sql`     | The SQL files that you want Flyway to use              |
我创建了
conf
drivers
sql
目录。在
conf
目录中,我放置了包含我的flyway Url、用户名和密码的文件
flyway.conf

flyway.url=jdbc:db2://localhost:50000/apidemo
flyway.user=DB2INST1
flyway.passord=mY%tEst%pAsSwOrD
drivers
目录中,我添加了DB2JDBCType4驱动程序(例如
db2jcc4.jar
db2jcc\u license\u cisuz.jar

sql
目录中,我放入了一个简单的表创建语句(文件名:
V1\u make\u temp\u table.sql
):

试图使用GitHub
Readme.md
中描述的
flyway/flyway
图像执行docker
运行
,它无法识别
flyway.conf
文件,因为它不知道url、用户和密码

docker run --rm -v sql:/flyway/sql -v conf:/flyway/conf -v drivers:/flyway/drivers flyway/flyway migrate


Flyway Community Edition 6.5.5 by Redgate
ERROR: Unable to connect to the database. Configure the url, user and password!
然后我将url、用户和密码内联,但它找不到JDBC驱动程序

docker run --rm -v sql:/flyway/sql -v drivers:/flyway/drivers flyway/flyway -url=jdbc:db2://localhost:50000/apidemo -user=DB2INST1 -password=mY%tEst%pAsSwOrD migrate

ERROR: Unable to instantiate JDBC driver: com.ibm.db2.jcc.DB2Driver => Check whether the jar file is present
Caused by: Unable to instantiate class com.ibm.db2.jcc.DB2Driver : com.ibm.db2.jcc.DB2Driver
Caused by: java.lang.ClassNotFoundException: com.ibm.db2.jcc.DB2Driver

因此,我认为是我设置本地文件系统或将本地文件与flyway卷关联的方式导致了问题。有人知道我做错了什么吗?

您需要提供卷的绝对路径,以便docker装载它们

将相对路径更改为绝对路径修复了卷装载问题

docker run --rm \
-v /Users/steve/github-ibm/flyway-db-migration/sql:/flyway/sql \
-v /Users/steve/github-ibm/flyway-db-migration/conf:/flyway/conf \
-v /Users/steve/github-ibm/flyway-db-migration/drivers:/flyway/drivers \
flyway/flyway migrate
docker run --rm \
-v /Users/steve/github-ibm/flyway-db-migration/sql:/flyway/sql \
-v /Users/steve/github-ibm/flyway-db-migration/conf:/flyway/conf \
-v /Users/steve/github-ibm/flyway-db-migration/drivers:/flyway/drivers \
flyway/flyway migrate