Working with Volumes
This article lists the volumes that can be mounted for XL products and along with the reason to use them.
Note: The folders you mount must to be owned by user 10001. For example, if you want to mount directories under ~/XebiaLabs/
folder, to change the ownership you can run sudo chown -R 10001 ~/XebiaLabs/
.
XL Deploy
By default, the environment variable APP_ROOT
points to /opt/xebialabs
and APP_HOME
points to /${APP_ROOT}/xl-deploy-server
. Typically, there is no need to change them.
The following locations can be mounted as volumes to provide either configuration data, and/or persistent storage for application data.
\${APP_HOME}/conf - This directory contains the configuration files and keystores for XL Deploy. If mounted it is possible to configure (and inject) non-default configuration settings.
- The
xl-deploy.conf
file is generated by the container startup script based on the environment variables set. To prevent this from happening, you can set theGENERATE_XL_CONFIG
environment variable tofalse
. Once the variable is set, thexl-deploy.conf
for the product will not be generated based on environment variables and you would have to provide this file yourself. - If you provide a file called
deployit.conf
in the conf folder mounted, you need to provide the relevant values for the attributes in your file as shown below:admin.password=ADMIN_PASSWORD
client.automatically.map.all.deployables.on.initial=false
client.automatically.map.all.deployables.on.update=false
client.automatically.map.all.deployables=true
client.server_poll.delay=30000
client.session.remember.enabled=true
client.session.timeout.minutes=20
hide.internals=false
http.bind.address=0.0.0.0
http.context.root=/
http.port=4516
http.upload.buffer=262144
importable.packages.path=importablePackages
maintenance.forbidden_paths=deployit/task\:POST,deployit/tasks/v2\:POST,deployit/control\:POST,xldeploy/task\:POST,xldeploy/tasks/v2\:POST,xldeploy/control\:POST
repository.keystore.password=admin
server.mapping.override.deployed.fields.on.update=true
server.resolve.application.dependencies=true
ssl.mutual=false
ssl=false
threads.max=150
threads.min=30 - The configuration files mentioned below can also be overwritten by providing the relevant attribute values, in the mounted volume. A default will be used for any file not provided in the mounted volume.
deployit-security.xml
logback-access.xml
logback.xml
logging.properties
wrapper-daemon.vm
xl-deploy.policy
xld-wrapper-server.conf
xld-wrapper-worker.conf
xld-wrapper.conf.common
xld-wrapper.conf.posix
xld-wrapper.conf.win
\${APP_HOME}/hotfix/lib - This directory contains the hotfixes for the libraries used by XL Deploy. When instructed by XebiaLabs support personnel, you should drop any delivered hotfixes in here.
\${APP_HOME}/hotfix/plugins - This directory contains the hotfixes for the plugins used by XL Deploy. When instructed by XebiaLabs support personnel, you should drop any delivered plugin hotfixes in here.
\${APP_HOME}/ext - This directory contains the developed (exploded plugins) for XL Deploy. You can customize an existing plugin here, for example you can modify the synthetic.xml
for a specific plugin here.
\${APP_HOME}/plugins - This directory contains the plugins that are running in XL Deploy. When mounted, plugins present in this directory will be loaded instead of bundled ones. If any base plugin is not provided, it will be loaded from default plugins. If you mount an empty directory, the default bundled plugins will be loaded. But it is recommended to use a custom image with required plugins to avoid issues during the upgrade process.
\${APP_HOME}/repository - This directory contains the embedded repository database for XL Deploy. Using the configuration injected through the ${APP_HOME}/conf
volume, it is possible to configure the used database to a remotely running database engine, instead of using the embedded memory based one. It is highly recommended not to use the embedded DB for production setup.
\${APP_HOME}/export - This directory holds the exported CIs when using the CI export option in XL Deploy
\${APP_HOME}/work - This directory will be used to save task data, task recovery files, uploaded files and temp files in XL Deploy. The task recovery files can be used in cases on container restarts if mounted externally to recover tasks.
Here is an example of mounting volumes for XL Deploy with docker compose.
version: "2"
services:
xl-deploy:
image: xebialabs/xl-deploy:9.5.0
container_name: xl-deploy
ports:
- "4516:4516"
volumes:
- ~/XebiaLabs/xl-deploy-server/conf:/opt/xebialabs/xl-deploy-server/conf
- ~/XebiaLabs/xl-deploy-server/hotfix/lib:/opt/xebialabs/xl-deploy-server/hotfix/lib
- ~/XebiaLabs/xl-deploy-server/hotfix/plugins:/opt/xebialabs/xl-deploy-server/hotfix/plugins
- ~/XebiaLabs/xl-deploy-server/ext:/opt/xebialabs/xl-deploy-server/ext
- ~/XebiaLabs/xl-deploy-server/plugins:/opt/xebialabs/xl-deploy-server/plugins
- ~/XebiaLabs/xl-deploy-server/repository:/opt/xebialabs/xl-deploy-server/repository
- ~/XebiaLabs/xl-deploy-server/repository:/opt/xebialabs/xl-deploy-server/export
- ~/XebiaLabs/xl-deploy-server/repository:/opt/xebialabs/xl-deploy-server/work
environment:
- ADMIN_PASSWORD=admin
- GENERATE_XL_CONFIG=false
- ACCEPT_EULA=Y
XL Release
By default, the environment variable APP_ROOT
points to /opt/xebialabs
and APP_HOME
points to /${APP_ROOT}/xl-release-server
there is no need to change them usually.
The following locations can be mounted as volumes to provide either configuration data, and/or persistent storage for application data.
\${APP_HOME}/conf - This directory contains the configuration files and keystores for XL Release. If mounted it is possible to configure (and inject) non-default configuration settings.
The
xl-release.conf
file andscript.policy
are generated by the container startup script based on the environment variables set. To prevent this from happening, you can set theGENERATE_XL_CONFIG
environment variable tofalse
. Once the variable is set, thexl-release.conf
for the product will not be generated based on environment variables and you would have to provide this file yourself.If you provide a file called
xl-release-server.conf
in the conf folder mounted, you need to provide relevant values for attributes in your file, as shown below:admin.password=admin
client.automatically.map.all.deployables.on.initial=false
client.automatically.map.all.deployables.on.update=false
client.automatically.map.all.deployables=true
client.server_poll.delay=30000
client.session.remember.enabled=true
client.session.timeout.minutes=20
hide.internals=false
http.bind.address=0.0.0.0
http.context.root=/
http.port=5516
http.upload.buffer=262144
importable.packages.path=importablePackages
maintenance.forbidden_paths=deployit/task\:POST,deployit/tasks/v2\:POST,deployit/control\:POST
repository.keystore.password=admin
server.mapping.override.deployed.fields.on.update=true
server.resolve.application.dependencies=true
ssl.mutual=false
ssl=false
threads.max=150
threads.min=30The below configuration files also can be overwritten by providing the same in the mounted volume. A default will be used for any file not provided in the mounted volume.
logback-access.xml
logback.xml
logging.properties
wrapper-daemon.vm
xl-release-security.xml
xl-release.policy
xlr-wrapper-linux.conf
xlr-wrapper-win.conf
\${APP_HOME}/hotfix - This directory contains the hotfixes for the libraries & plugins used by XL Release. When instructed by XebiaLabs support personnel, you should drop any delivered hotfixes in here.
\${APP_HOME}/ext - This directory contains the developed (exploded plugins) for XL Release. You can customize an existing plugin here, for example you can modify the synthetic.xml
for a specific plugin here.
\${APP_HOME}/plugins - This directory contains the plugins that are running in XL Release. When mounted, plugins present in this directory will be loaded instead of bundled ones. If any base plugin is not provided it will be loaded from default plugins. If you mount an empty directory the default bundled plugins will be loaded. But it is recommended to use a custom image with required plugins to avoid issues during the upgrade process.
\${APP_HOME}/repository - This directory contains the embedded repository database for XL Release. Using the configuration injected through the ${APP_HOME}/conf
volume, it is possible to configure the used database to a remotely running database engine, instead of using the embedded memory base one. It is highly recommended not to use the embedded DB for production setup.
\${APP_HOME}/archive - This directory contains the embedded archive database for XL Release. Using the configuration injected through the ${APP_HOME}/conf
volume, it is possible to configure the used database to a remotely running database engine, instead of using the embedded memory base one. It is highly recommended not to use the embedded DB for production setup.
\${APP_HOME}/reports - The report files generated from XL Release are stored in this folder.
Here is an example of mounting volumes for XL Release with docker compose.
version: "2"
services:
xl-release:
image: xebialabs/xl-release:9.5.0
container_name: xl-release
ports:
- "5516:5516"
links:
- xl-deploy
volumes:
- ~/XebiaLabs/xl-release-server/conf:/opt/xebialabs/xl-release-server/conf
- ~/XebiaLabs/xl-release-server/hotfix/:/opt/xebialabs/xl-release-server/hotfix/
- ~/XebiaLabs/xl-release-server/ext:/opt/xebialabs/xl-release-server/ext
- ~/XebiaLabs/xl-release-server/plugins:/opt/xebialabs/xl-release-server/plugins
- ~/XebiaLabs/xl-release-server/repository:/opt/xebialabs/xl-release-server/repository
- ~/XebiaLabs/xl-release-server/archive:/opt/xebialabs/xl-release-server/archive
- ~/XebiaLabs/xl-release-server/archive:/opt/xebialabs/xl-release-server/reports
environment:
- ADMIN_PASSWORD=admin
- GENERATE_XL_CONFIG=false
- ACCEPT_EULA=Y