Container Image

We strongly recommend operating an Axon Ivy Engine Cluster in a containerized environment like Docker or Kubernetes.

We recommend that you build your own container image that contains the Axon Ivy Engine together with your projects and configuration.

The building of the container image can be done automatically using a build server.

digraph overview {
  dockerhub [ label="Docker Hub", pos = "5,7.5!"];

  git [ label="Git Repository", pos = "0,7.5!"];

  build [ label="Build Server", pos = "2.5,5!" width="1.5"];

  dockerregistry [ label="Docker Registry", pos = "2.5,2.5!"];
  
  cluster [ label="Axon Ivy Cluster",pos = "8,2.5!" width=1.8 height=3.1 style="dotted" fontcolor="black" labelloc="t"];
  engine1 [label="Node 1", pos="8,3.2!", height="0.8", width="1.5", color="#C7D426", fontcolor="black"];
  engine2 [label="Node 2", pos="8,2.3!", height="0.8", width="1.5", color="#C7D426", fontcolor="black"];  
  engine3 [label="Node 3", pos="8,1.4!", height="0.8", width="1.5", color="#C7D426", fontcolor="black"];
  
  dockerhub -> build [ label="axonivy/axonivy-engine"];
  git -> build [ label="Projects, Configuration, Dockerfile" ];
  build -> dockerregistry [ label="your-company/your-project" ]; 
  dockerregistry -> cluster [ label="your-company/your-project" ];
}

The build server:

  1. Checks out all your projects, configuration and a Dockerfile (specifies how to build your container image) from a Git Repository.

  2. Builds all your projects and bundles them in an application zip file.

  3. Builds your container image by using the Dockerfile. The base image axonivy/axonivy-engine image will be pulled from Docker Hub.

  4. It stores your new image (your-company/your-project) in a Docker Registry.

Then, you can start your Axon Ivy Engine Cluster using your new container image (your-company/your-project).

A simple Dockerfile that bundles an Axon Ivy Engine, your projects and your configuration files in an own container image looks like this:

# The base docker image
FROM axonivy/axonivy-engine:|version|

# Add your own ivy.yaml configuration file
ADD --chown=ivy:ivy config/ivy.yaml /etc/axonivy-engine/ivy.yaml

# Add your license file
ADD --chown=ivy:ivy config/myCompany.lic /etc/axonivy-engine/myCompany.lic

# Add your projects bundled in an application zip file
ADD --chown=ivy:ivy application/target/application.zip /var/lib/axonivy-engine/deploy/application.zip

# Creates a files directory that can be mounted to a docker volume to be shared between cluster nodes
RUN mkdir -p /var/lib/axonivy-engine/files && chown -R ivy /var/lib/axonivy-engine/files

Examples

See our project-build-examples. It shows how to use Maven to build your own container image that contains an Axon Ivy Engine and your application zip file.

Futhermore, see also our example configurations on GitHub for NGINX and HAProxy on how to setup an Axon Ivy Engine Cluster with docker-compose.