【问题标题】:Can not get flyway-docker to recognize local files in volumes无法让 flyway-docker 识别卷中的本地文件
【发布时间】: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              |

我创建了confdriverssql 目录。在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.jardb2jcc_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


    【解决方案1】:

    您需要提供卷的绝对路径,以便 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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-09-08
      • 1970-01-01
      • 2022-12-08
      • 2018-06-27
      • 2021-09-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多