Sign inSign up

kilna/liquibase-mariadb

By kilna

Updated over 7 years ago

Lightweight docker for applying Liquibase changes against MariaDB databases

Image
1

5.4K

kilna/liquibase-mariadb repository overview

liquibase-mariadb-docker

A lightweight Docker for running Liquibase with MariaDB databases

DockerHub: liquibase-mariadb - GitHub: liquibase-mariadb-docker

Usage

Using your own derived Dockerfile

You can use this image by creating your own Dockerfile which inherits using a FROM line:

FROM kilna/liquibase-mariadb
ENV LIQUIBASE_HOST=database.server
ENV LIQUIBASE_DATABASE=dbname
ENV LIQUIBASE_USERNAME=user
ENV LIQUIBASE_PASSWORD=pass
COPY changelog.xml /workspace

Make sure to create an appropriate changelog.xml in the same directory as your Dockerfile.

Then you can build your derived Dockerfile to an image tagged 'changelog-image':

$ docker build --tag changelog-image .

Any time you make changes to the example project, you'll need to re-run the docker build command above, or you can using docker volumes as described below to sync local filesystem changes into the container. To run liquibase using the new image you can:

$ docker run changelog-image liquibase updateTestingRollback

Since the working directory within the container is /workspace, and since the entrypoint generates a a liquibase.properties file using the provided environment variables, it will know to look for changelog.xml by default and apply the change. See the environment variables below to change this behavior.

Using the image directly with a mounted docker volume

If you'd like to apply a changelog to a MariaDB database without deriving your own container, run the contiainer appropriate to your database like so... where /local/path/to/changelog/ is the directory where a valid changelog.xml exists:

$ docker run -e LIQUIBASE_HOST=database.server -e LIQUIBASE_USERNAME=user -e LIQUIBASE_PASSWORD=pass \
    -e LIQUIBASE_DATABASE=dbname -v /local/path/to/changelog/:/workspace/ kilna/liquibase-mariadb \
    liquibase updateTestingRollback

Environment Variables and liquibase.properties

This docker image has a working Liquibase executable in the path, and an entrypoint which auto-generates a liquibase.properties file.

In order to create the liquibase.properties file, it uses the follow environment variables when the image is started with 'docker run':

Environment VariablePurposeDefault
LIQUIBASE_HOSTDatabase host to connect todb
LIQUIBASE_PORTDatabase port to connect to3306
LIQUIBASE_DATABASEDatabase name to connect toliquibase
LIQUIBASE_USERNAMEUsername to connect to database asliquibase
LIQUIBASE_PASSWORDPassword for usernameliquibase
LIQUIBASE_CHANGELOGDefault changelog filename to usechangelog.xml
LIQUIBASE_LOGLEVELLog level as defined by Liquibase
Valid values: debug, info, warning, severe, off
info
LIQUIBASE_CLASSPATHJDBC driver filename/opt/jdbc/mariadb-jdbc.jar
LIQUIBASE_DRIVERJDBC object pathorg.mariadb.jdbc.Driver
LIQUIBASE_URLJDBC URL for connectionjdbc:mariadb://${HOST}:${PORT}/${DATABASE}
LIQUIBASE_DEBUGIf set to 'yes', when docker run is executed, will show the values of all LIQUIBASE_* environment variables and describes any substitutions performed on liquibase.propertiesunset

The generated liquibase.properties file is loaded into the default working dir /workspace (which is also shared as a docker volume). The /workspace/liquibase.properties file will have any variables substituted each time a 'docker run' command is performed... so you can load your own /workspace/liquibase.properties file and put ${HOST} in it, and it will be replaced with the LIQUIBASE_HOST environment variable.

If you want to see what the contents of the generated liquibase.properties file are, you can:

$ docker run image-name cat liquibase.properties

Tag summary

Content type

Image

Digest

Size

50.1 MB

Last updated

over 7 years ago

docker pull kilna/liquibase-mariadb