问题描述
我正在尝试使用Flyway在Docker容器中设置DB2测试/演示环境。我有一个在docker容器中运行的DB2映像,现在正试图飞速创建数据库环境。我可以连接到DB2 docker容器并创建DB2对象并向其加载数据,但是我正在寻找一种非技术用户的方法(例如,克隆GitHub存储库并发出单个docker run命令)。
Flyway Docker站点(https://github.com/flyway/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.conf
,其中包含我的飞行通道网址,用户名和密码:
flyway.url=jdbc:db2://localhost:50000/apidemo
flyway.user=DB2INST1
flyway.passord=mY%tEst%pAsSwOrD
在drivers
目录中,添加了DB2 JDBC Type 4驱动程序(例如db2jcc4.jar
,db2jcc_license_cisuz.jar
)
在sql
目录中,我放入了一个简单的表创建语句(文件名:V1__make_temp_table.sql
):
CREATE TABLE EDS.REFT_TEMP_DIM (
TEMP_ID INTEGER NOT NULL ),TEMP_CD CHAR (8),TEMP_NM VARCHAR (255)
)
DATA CAPTURE NONE
COMPRESS NO;
如GitHub run
中所述,尝试使用flyway/flyway
映像执行docker Readme.md
,但由于无法识别flyway.conf
文件,因此无法识别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!
文件网址,用户和密码。
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
然后我将url,用户名和密码内联,并且找不到JDBC驱动程序。
import xlwings as xw
sht = xw.sheets.active
sht.range(f'$A1:$C5').api.HorizontalAlignment = -4131
因此,我相信是造成此问题的原因是我设置本地文件系统或将本地文件与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