【问题标题】:Custom LiquibaseDataTypes not found in docker image classpath在 docker 图像类路径中找不到自定义 LiquibaseDataTypes
【发布时间】:2022-06-13 16:56:43
【问题描述】:

我正在尝试构建一个自定义 Liquibase docker 镜像(基于官方 liquibase/liquibase:4.3.5 镜像),用于在 Kubernetes 中运行数据库迁移。

我正在为数据库使用一些自定义类型,这些类型是使用@DataTypeInfo 注释实现的,并扩展现有的LiquibaseDataTypes,如liquibase.datatype.core.VarcharType(类发现是使用Liquibase 4+ 中引入的META-INF/services/liquibase.datatype.LiquibaseDatatype 机制实现的)。

这些扩展是在他们自己的名为“schema-impl”的 maven 模块中实现的,该模块正在生成一个 schema-impl.jar。使用集成在应用启动过程中的迁移时一切正常,但现在我们希望通过专用的 docker 镜像来完成。

Liquibase 文档中有关此主题的唯一信息是来自this document 的“驱动程序和扩展”部分。据此,我在映像构建过程中将 schema-impl.jar 添加到/liquibase/classpath 目录中,并修改了liquibase.docker.properties 以便在classpath 中显式添加此jar 文件属性:

classpath: /liquibase/changelog:/liquibase/classpath:/liquibase/classpath/schema-impl.jar
liquibase.headless: true

但是,当我尝试使用 docker 映像运行我的变更集时,我总是收到错误消息,因为它找不到自定义类型定义:

liquibase.exception.DatabaseException: ERROR: type "my-string" does not exist

任何帮助将不胜感激。提前致谢。

【问题讨论】:

    标签: java docker classpath liquibase


    【解决方案1】:

    好的,我找到了。基本上问题是我需要在入口点命令中包含类路径,而不是在 liquibase.docker.properties 文件中(这似乎对这个用例没用),如下所示:

    --classpath=/liquibase/changelog:/liquibase/classpath/schema-impl.jar
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-13
      • 2011-07-26
      • 2012-06-18
      • 2013-10-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多