【发布时间】: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