I am trying to build a custom Liquibase docker image (based on the official
liquibase/liquibase:4.3.5 image) for running database migrations in Kubernetes.
I am using some custom types for the database which are implemented using
@DataTypeInfo annotation and extending existing
liquibase.datatype.core.VarcharType (class discovery is implemented using the
META-INF/services/liquibase.datatype.LiquibaseDatatype mechanism introduced in Liquibase 4+).
These extensions are implemented inside their own maven module called “schema-impl”, which is generating a schema-impl.jar. Everything was working fine when using migrations integrated inside the app startup process, but now we want this to be done by the dedicated docker image.
The only information in the Liquibase documentation regarding this topic is the “Drivers and extensions” section from this document. According to this, I added the schema-impl.jar into the
/liquibase/classpath directory during the image building process and also modified the
liquibase.docker.properties in order to add this jar file explicitly inside the
classpath: /liquibase/changelog:/liquibase/classpath:/liquibase/classpath/schema-impl.jar liquibase.headless: true
However, when I try to run my changesets with the docker image, I am always getting an error because it cannot find the custom type definition:
liquibase.exception.DatabaseException: ERROR: type "my-string" does not exist
Any help would be really appreciated. Thanks in advance.