Docker images for Deploy
This topic provides instructions for running Digital.ai Deploy using Docker, including setup, environment support, and persistent configuration.
The available Docker images for Digital.ai Deploy:
-
A regular image based on Debian (slim) Linux flavor of the OpenJDK base image.
-
Docker Hub Deploy image Deploy Docker Image
Note: You can also customize a Docker image and use it as per your needs. For more information see Dockerfile customization.
Requirements and prerequisites
To run the Docker image for Deploy you must have:
- A Deploy valid license
- Docker version 18.03.1-ce installed
For more information about licensing, see Docker environment variables.
docker images
- See
ACCEPT_EULA
in Docker environment variables.
Hosting environment support
Private cloud
- Physical servers
- Virtual machines vSphere
Public cloud
- Amazon Elastic Container Services (ECS):
- Amazon ECS with EC2 via AWS Quick Start
- AWS AMI via the AMI marketplace
Docker environment support
- Docker engine - Community (Linux/Windows)
- Docker Enterprise Edition (Linux/Windows Server)
Persistent configuration setup
To use the software in optimal conditions, you must ensure that all the data (repository, configuration, plugins) is stored outside the container. This is required to maintain the container life cycle.
Example: This is required during updates and to perform proper back up.
You can set up persistent configuration in Docker containers by specifying volume mount points. With these links, a file system directory outside the container can be used inside the container.
Set environment variables
To change the default setup procedure that runs when a fresh installation is detected, the Deploy image exposes the following environment variables:
ADMIN_PASSWORD
: sets the admin password for a new installation. If this environment variable is not set, a random admin password is generated and printed to the console of the container.REPOSITORY_KEYSTORE_PASSPHRASE
: sets the passphrase of the repository encryption key for a new installation. If this environment variable is not set, a random passphrase is generated and printed to the console of the container.
For a complete list of environment variables, see Docker environment variables
Ports exposed
The Deploy image exposes port 4516
over which the Deploy user interface and REST API are served.
Set volumes as mount points
The Deploy image exposes the following directories as mount points:
/opt/xebialabs/xl-deploy-server/conf
/opt/xebialabs/xl-deploy-server/ext
/opt/xebialabs/xl-deploy-server/hotfix/lib
/opt/xebialabs/xl-deploy-server/hotfix/plugins
/opt/xebialabs/xl-deploy-server/plugins
/opt/xebialabs/xl-deploy-server/repository
/opt/xebialabs/central-configuration-server/conf
/opt/xebialabs/central-configuration-server/centralConfiguration
For more information on the list of volumes and the reason for mounting, see Manage volumes in Docker Providing volumes for these mount points is optional and guarantees persistence across container runs. The sections below describe how the mount points are handled.
Configuration directory (conf
)
The /opt/xebialabs/xl-deploy-server/conf
folder on the image is empty. The first time the container is started, the content of the /opt/xebialabs/xl-deploy-server/default-conf
directory is copied to the conf
directory. The files in the default-conf
are similar to the files in a regular Deploy installation ZIP. They have been tweaked for Deploy running in a container. The default-conf
directory contains the following files:
deployit.conf
jmx-exporter.yaml
logback.xml
logback-access.xml
logging.properties
wrapper-daemon.vm
xlc-wrapper.conf.common
xlc-wrapper.conf.win
xlc-wrapper.conf.posix
If a volume is provided for the /opt/xl-deploy-server/xebialabs/conf
mount point, the configuration (including the admin password and the product license) is persisted across all container runs. If any files are present on the volume the first time that the container starts, they will not be overwritten by the files from the default-conf
directory. You can use this to set configurations like the logback.xml
, ahead of time.
Note:
From Deploy 10.2, the Deploy shared configuration files are included in the centralConfiguration
folder. You can run the Central Configuration as a standalone service using Docker container or persistent Docker volumes. For more information about the Docker image for Central Configuration, see Docker Images for Central Configuration.
Plugins directory (plugins
)
The /opt/xebialabs/xl-deploy-server/plugins
folder on the image is empty. The first time that the container is started, the content of the /opt/xebialabs/xl-deploy-server/default-plugins
directory is copied into the plugins
directory.
If a plugin is already present in a volume mounted on the plugins
mount point, it is not overwritten. This behavior also identifies different versions of the same plugin.
If you provide a volume for the /opt/xebialabs/xl-deploy-server/plugins
directory, you can use it to pre-select specific plugins before startup. You must upgrade the plugins manually. For more information, see Upgrade instructions for Deploy.
Data directories (repository
and archive
)
In the default setup, the embedded H2 and Derby databases are used to persist the repository and the archive data respectively and are stored in the /opt/xebialabs/xl-deploy-server/repository
and /opt/xebialabs/xl-deploy-server/archive
directories. Provide a mount point for these volumes to ensure that the repository and archive data are preserved across container runs. To set up an external database server, see Deploy.
Customizations and hotfixes directories (ext
and hotfix
)
The /opt/xebialabs/xl-deploy-server/ext
, /opt/xebialabs/xl-deploy-server/hotfix/lib
and /opt/xebialabs/xl-deploy-server/hotfix/plugins
volumes are provided to allow customizations and to install hotfixes.
Persistent configuration example
The mount points are passed to the Docker command using the -v
parameter.
The following command starts a Deploy container with persistent configuration and storage:
$ docker run -d -p 4516:4516 \
-v ${HOME}/XebiaLabs/xl-deploy-docker/conf:/opt/xebialabs/xl-deploy-server/conf:rw \
-v ${HOME}/XebiaLabs/xl-deploy-docker/repository:/opt/xebialabs/xl-deploy-server/repository:rw \
-v ${HOME}/XebiaLabs/xl-deploy-docker/archive:/opt/xebialabs/xl-deploy-server/archive:rw \
--name xld xebialabs/xl-deploy:8.1
Before starting the containers, save the license file in the local conf
directory:
<USER_HOME>/XebiaLabs/xl-deploy-docker/conf/xl-deploy-license.lic