【发布时间】:2020-12-20 00:40:24
【问题描述】:
我正在尝试使用 Flyway 在 Docker 容器中设置 DB2 测试/演示环境。我有一个在 docker 容器中运行的 DB2 映像,现在正试图获得 flyway 来创建数据库环境。我可以连接到 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 Url、用户名和密码的文件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 Readme.md 中描述的 flyway/flyway 图像执行 docker run,它无法识别 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 卷相关联的方式导致了问题。有人知道我做错了什么吗?
【问题讨论】:
标签: flyway