Skip to main content

Quick Start

Each quick start setup is a directory under dial-docker-compose/ containing a docker-compose.yml that includes a shared base file (common.yml) and adds setup-specific services.

Common services​

dial-docker-compose/common.yml defines four services shared by all quick start setups:

ServiceImageRole
coreepam/ai-dial-coreAPI server. Mounts settings.json, gflog.xml, and config.json from the host.
chatepam/ai-dial-chatWeb UI. Connects to Core for API access and Themes for UI assets. Uses API key authentication (no identity provider).
redisredis:7.2.4-alpine3.19In-memory cache for Core. Configured as a volatile cache with no persistence.
themesepam/ai-dial-chat-themesStatic file server for Chat theme CSS, images, and configuration.

Each setup-specific docker-compose.yml includes common.yml via the include directive:

include:
- path: ../common.yml
env_file: ./.env
Apple Silicon (ARM64) users

DIAL service definitions pin platform: linux/amd64 because the epam/ai-dial-* images are currently published for linux/amd64 only. On Apple Silicon Macs this makes Docker run them under emulation explicitly, avoiding "platform mismatch" warnings. Third-party images (redis, keycloak, ollama) are intentionally left unpinned so they use their native arm64 builds. Publishing multi-architecture epam/ai-dial-* images with native arm64 variants is a future goal — once available, these platform: lines can be removed.

Full common.yml​

services:
themes:
image: epam/ai-dial-chat-themes:0.9.1
platform: linux/amd64
ports:
- "3001:8080"

chat:
ports:
- "3000:3000"
image: epam/ai-dial-chat:0.26.0
platform: linux/amd64
depends_on:
- themes
- core
environment:
NEXTAUTH_SECRET: "secret"
THEMES_CONFIG_HOST: "http://themes:8080"
DIAL_API_HOST: "http://core:8080"
DIAL_API_KEY: "dial_api_key"
ENABLED_FEATURES: "conversations-section,prompts-section,top-settings,..."
KEEP_ALIVE_TIMEOUT: ${CHAT_KEEP_ALIVE_TIMEOUT:-20000}

redis:
image: redis:7.2.4-alpine3.19
restart: always
ports:
- "6379:6379"
command: >
redis-server
--maxmemory 2000mb
--maxmemory-policy volatile-lfu
--save ""
--appendonly no
--loglevel warning
mem_limit: 2200M

core:
user: ${UID:-root}
ports:
- "8080:8080"
image: epam/ai-dial-core:0.25.1
platform: linux/amd64
environment:
'AIDIAL_SETTINGS': '/opt/settings/settings.json'
'JAVA_OPTS': '-Dgflog.config=/opt/settings/gflog.xml'
'LOG_DIR': '/app/log'
'STORAGE_DIR': '/app/data'
'aidial.config.files': '["/opt/config/config.json"]'
'aidial.storage.overrides': '{ "jclouds.filesystem.basedir": "data" }'
'aidial.redis.singleServerConfig.address': 'redis://redis:6379'
depends_on:
- redis
volumes:
- ./settings:/opt/settings
- ${DIAL_DIR:-.}/core:/opt/config
- ${DIAL_DIR:-.}/core-logs/:/app/log
- ${DIAL_DIR:-.}/core-data/:/app/data

Core volume mounts​

MountPurpose
./settings:/opt/settingssettings.json and gflog.xml
./core:/opt/configconfig.json
./core-logs:/app/logLog output directory
./core-data:/app/dataFilesystem blob storage

Redis server configuration​

ArgumentValueDescription
--maxmemory2000mbMaximum memory Redis is allowed to use. Set slightly below the container memory limit.
--maxmemory-policyvolatile-lfuEviction policy. Evicts the least-frequently-used keys among those with an expiration set.
--save ""(empty)Disables RDB persistence. DIAL uses Redis as a cache, not a primary datastore.
--appendonly no—Disables AOF persistence.
--loglevel warning—Suppresses INFO and DEBUG log output.

See Redis connection settings for DIAL Core's redis.* configuration in settings.json.


Available configurations​

Echo application​

dial-docker-compose/application/ — a minimal setup with a custom echo application.

include:
- path: ../common.yml
env_file: ./.env

services:
echo:
build: echo

The echo application is built from a local Dockerfile. Its config.json registers the app with DIAL Core. This is the simplest setup for verifying a DIAL deployment.

Azure OpenAI models​

dial-docker-compose/model/ — two Azure OpenAI models via the OpenAI adapter.

include:
- path: ../common.yml
env_file: ./.env

services:
adapter-openai:
image: epam/ai-dial-adapter-openai:0.22.0
platform: linux/amd64
environment:
WEB_CONCURRENCY: "3"

Requires Azure OpenAI API keys in the config.json upstream entries. See Adapter configuration for adapter environment variables.

Note

This sample runs the standalone DIAL OpenAI Adapter, which will be deprecated. For your own deployments, use DIAL Model Provider, which serves the same adapter under /compat/openai. To move a configuration, see Migrate from the standalone adapters.

Ollama (self-hosted)​

dial-docker-compose/ollama/ — self-hosted chat, vision, and embedding models via Ollama.

The setup includes an Ollama container with GPU support and configures DIAL Core to route requests to Ollama's OpenAI-compatible endpoint. No adapter is needed — Ollama speaks the OpenAI protocol natively.

vLLM (self-hosted)​

dial-docker-compose/vllm/ — self-hosted model via vLLM.

Similar to the Ollama setup but uses vLLM as the inference engine. Requires GPU access configured in the compose file.


Running a setup​

cd dial-docker-compose/application
docker compose up

DIAL Chat is available at http://localhost:3000.

Further reading​