Docker

Docker is used for development and for deployment.

Docker Images

Docker images are used in development, usually with the local working files mounted in the images to set behaviour.

Images are built by Jenkins, after tests pass, and are published to DockerHub. We try to store the configuration in the environment, so that the published images can be used in deployments by setting environment variables to deployment-specific values.

Here are some of the images used in the Kuma project:

kuma

The kuma Docker image builds on the kuma_base image, installing a kuma branch and building the assets needed for running as a webservice. The environment can be customized for different deployments.

The image can be recreated locally with make build-kuma.

The image tagged latest is used by default for development. It can be created locally with make build-kuma VERSION=latest. The official latest image is created from the master branch in Jenkins and published to DockerHub.

kuma_base

The kuma_base Docker image contains the OS and libraries (C, Python, and Node.js) that support the kuma project. The kuma image extends this by installing the kuma source and building assets needed for production.

The image can be recreated locally with make build-base.

The image tagged latest is used by default for development. It can be created locally with make build-base VERSION=latest. The official latest image is created from the master branch in Jenkins and published to DockerHub

kumascript

The kumascript Docker image contains the kumascript rendering engine and support files.

The image must be created from the kuma repo since it depends upon that repo’s locale sub-module. From the kuma repo’s root directory, use make build-kumascript for an image tagged with the current commit-hash, make build-kumascript KS_VERSION=latest for one tagged with latest, or make build-kumascript-with-all-tags for an image tagged with both.

The image tagged latest is used by default for development, while an image tagged with a commit-hash can be used for deployment. The official images are created from the master branch in Jenkins and published to DockerHub.