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.
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:
| Profile | Service | Replaces |
|---|---|---|
with-release | Local Digital.ai Release container | Your existing Release instance |
with-keycloak | Local Keycloak, preloaded with a realm and users | Your enterprise identity provider |
with-postgres | Local PostgreSQL | Your managed PostgreSQL server |
with-llm-service | Local LLM Service (llm-service-api, llm-service-dbinit) | An external LLM Service endpoint |
with-nginx | Optional reverse proxy that terminates TLS | A corporate load balancer |
Container Images
The following images are available on Docker Hub. Use the latest available tag of each image. The test lab relies on the MCP server built in to Release, so the Release image must be at the 26.1.5 maintenance release or later.
| Component | Docker Hub repository |
|---|---|
| Digital.ai Release | xebialabs/xl-release |
| Release Assistant | xebialabsunsupported/dai-release-assistant |
| LLM Service API | xebialabsunsupported/llm-service-api |
| LLM Service DB init | xebialabsunsupported/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:
-
Add the lab hostnames to your host file (
/etc/hostson macOS and Linux):127.0.0.1 release.example.digital.ai.local127.0.0.1 release-assistant.example.digital.ai.local127.0.0.1 identity.example.digital.ai.local -
Copy
.env.baseto.env. Most values are preconfigured for the lab. Set every value markedreplace-mein the file, includingAI_LLM_CHAT_MODEL,DAI_ACCOUNT_ID, andLLM_SERVICE_DEFAULT_PROVIDER_CONFIG(see the next step).DAI_ACCOUNT_IDmust be a 32-character UUID. For this lab, any UUID value works. -
Set the LLM provider configuration. The LLM Service reads it from
LLM_SERVICE_DEFAULT_PROVIDER_CONFIGas base64-encoded JSON. For Anthropic, save this snippet asanthropic.jsonand 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.jsonFor the OpenAI and AWS Bedrock examples, see LLM Provider Configuration in the deployment guide.
-
Start the infrastructure services (PostgreSQL, Keycloak, Release), then the application services (LLM Service, Release Assistant).
-
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:
| Username | Password |
|---|---|
gandalf | gandalf |
alice | alice |
bob | bob |
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_MODELto the bare model name returned by the LLM endpoint, for exampleclaude-sonnet-4-6. The provider-prefixed formanthropic.claude-sonnet-4-6does 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.