Manage volumes in Docker

This article lists the volumes that can be mounted for Release 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/ .

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 Release. If mounted it is possible to configure (and inject) non-default configuration settings.

  • The xl-release.conf file and script.policy are generated by the container startup script based on the environment variables set. To prevent this from happening, you can set the GENERATE_XL_CONFIG environment variable to false. Once the variable is set, the xl-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=30
  • The following 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 and plugins used by Release. When instructed by Digital.ai Support personnel, you should drop any delivered hotfixes in here.

${APP_HOME}/ext - This directory contains the developed (exploded plugins) for 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 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 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 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 Release are stored in this folder.

Here is a sample for mounting volumes for 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