Skip to main content
Version: Release Next

Lab Deployment Using Docker

This guide is for trying AI Assistant before a production deployment. The Quickstart in the AI Assistant Docker Repository stands up the supporting components alongside the AI Assistant services on a single host over HTTP, with no TLS or reverse proxy to configure.

caution

The test-lab setup is for testing and demo purposes only. It is not for production use and is not covered by Digital.ai support. For a production deployment, see the Production Deployment Using Docker.

Prerequisites

The test lab has no infrastructure prerequisites. You do not need an existing Release instance, identity provider, or PostgreSQL server. Every supporting component runs as a Docker Compose profile. You need:

  • Docker Engine and the Docker Compose plugin installed on the host.
  • LLM provider credentials, such as an OpenAI, Anthropic, or AWS Bedrock API key, for the LLM Service.
  • Access to the container registry hosting the AI Assistant images.

You do not need a Release license. The local Release container downloads a trial license automatically.

What the Test Lab Includes

Each supporting component is opt-in through a Docker Compose profile. Nothing starts until you add its profile to a docker compose command:

ProfileServiceReplaces
with-releaseLocal Digital.ai Release containerYour existing Release instance
with-keycloakLocal Keycloak, preloaded with a realm and usersYour enterprise identity provider
with-postgresLocal PostgreSQLYour managed PostgreSQL server
with-llm-serviceLocal LLM Service (llm-service-api, llm-service-dbinit)An external LLM Service endpoint
with-nginxOptional reverse proxy that terminates TLSA corporate load balancer

Container Images

The following images are available on Docker Hub. Use the latest available tag of each image:

ComponentDocker Hub repository
Digital.ai Releasexebialabs/xl-release
Release Assistantxebialabsunsupported/dai-release-assistant
LLM Service APIxebialabsunsupported/llm-service-api
LLM Service DB initxebialabsunsupported/llm-service-dbinit

Set the Release Assistant image in your .env file as RELEASE_ASSISTANT_IMAGE.

Keycloak, PostgreSQL, and NGINX are pulled from their public registries using the tags set in the .env.base template.

Install and Verify

Follow the Quick Start Guide in the repository for the exact commands. The sequence is:

  1. Add the lab hostnames to your host file (/etc/hosts on macOS and Linux):

    127.0.0.1 release.example.digital.ai.local
    127.0.0.1 release-assistant.example.digital.ai.local
    127.0.0.1 identity.example.digital.ai.local
  2. Copy .env.base to .env. Most values are preconfigured for the lab. Set every value marked replace-me in the file, including AI_LLM_CHAT_MODEL, DAI_ACCOUNT_ID, and LLM_SERVICE_DEFAULT_PROVIDER_CONFIG (see the next step). DAI_ACCOUNT_ID must be a 32-character UUID. For this lab, any UUID value works.

  3. Set the LLM provider configuration. The LLM Service reads it from LLM_SERVICE_DEFAULT_PROVIDER_CONFIG as base64-encoded JSON. For Anthropic, save this snippet as anthropic.json and replace the API key:

    {
    "type": "anthropic",
    "config": {
    "api_key": "sk-ant-your-api-key",
    "base_url": "https://api.anthropic.com",
    "max_retries": 2,
    "default_headers": null,
    "anthropic_proxy": null,
    "timeout": null
    }
    }

    Encode the JSON and set the result in .env:

    base64 -w0 anthropic.json

    For the OpenAI and AWS Bedrock examples, see LLM Provider Configuration in the deployment guide.

  4. Start the infrastructure services (PostgreSQL, Keycloak, Release), then the application services (LLM Service, Release Assistant).

  5. Verify the health endpoints and sign in to Release to run a first chat.

Sign-In Users

The test-lab Keycloak realm ships with preconfigured users. Each user's password equals the username. For a first login to Digital.ai Release and AI Assistant, use one of:

UsernamePassword
gandalfgandalf
alicealice
bobbob

For the Keycloak admin console, use admin / admin. For the full user list, see the Quick Start Guide.

In this lab setup, all authenticated users currently have global admin permissions in Release. These credentials are for local testing only. Do not use them in shared, staging, or production environments.

Tips and Troubleshooting

  • Set AI_LLM_CHAT_MODEL to the bare model name returned by the LLM endpoint, for example claude-sonnet-4-6. The provider-prefixed form anthropic.claude-sonnet-4-6 does not work with the local LLM Service.
  • The Keycloak container reports an unhealthy status because it runs over HTTP in the lab. This does not affect the setup and can be ignored. Keycloak readiness is exposed on the management port (default 25090), not the public HTTP port.

For common issues, see AI Assistant On-Prem Troubleshooting.

Tear Down and Re-Running

The test-lab stack persists state on the host: the PostgreSQL data volume (ask-release-postgres-data) and files generated under the mounted test-lab/ directories (Release config and license, Keycloak realm data, and logs). The database initialization scripts and the Keycloak realm seed, which create the databases, roles, and sign-in users such as gandalf and bob, run only on the first startup against empty data. If you start the stack a second time without clearing this state, initialization is skipped and startup can fail on the leftover data.

Before you re-run the lab, tear the stack down and remove the persisted state:

docker compose --project-directory . \
-f docker-compose.yaml \
-f test-lab/docker-compose.yaml \
--profile with-postgres --profile with-llm-service --profile with-keycloak --profile with-release \
down --remove-orphans

# Remove the PostgreSQL data volume
docker volume rm ask-release-postgres-data

# Remove generated files, keeping your .env
git clean -fdx -e .env

Next Steps

When you are ready to deploy AI Assistant for production use, with your own Release instance, identity provider, and PostgreSQL server, follow the Production Deployment Using Docker.