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