Core, Redis & Themes
This page documents the Core, Redis, and Themes service definitions in the advanced docker-compose-base.yml.
Core
core:
image: epam/ai-dial-core:0.47.1
platform: linux/amd64
environment:
'JAVA_OPTS': '-Dgflog.config=/opt/settings/gflog.xml'
'aidial.config.files': '["/app/config/config.json"]'
'aidial.identityProviders.keycloak.jwksUrl': 'http://keycloak:${KC_PORT}/realms/dial/protocol/openid-connect/certs'
'aidial.identityProviders.keycloak.rolePath': 'roles'
'aidial.access.admin.rules': '[{"source": "roles", "function": "CONTAIN", "targets": ["admin"]}]'
'aidial.identityProviders.keycloak.loggingKey': 'email'
'aidial.identityProviders.keycloak.loggingSalt': 'loggingSalt'
'aidial.encryption.secret': '${DIAL_CORE_ENCRYPTION_SECRET}'
'aidial.encryption.key': '${DIAL_CORE_ENCRYPTION_KEY}'
'aidial.redis.singleServerConfig.address': 'redis://redis:6379'
'aidial.storage.provider': 'filesystem'
'aidial.storage.prefix': 'core'
'aidial.storage.bucket': 'dial'
'aidial.storage.createBucket': 'true'
'aidial.storage.overrides': '{"jclouds.filesystem.basedir": "data"}'
'aidial.applications.includeCustomApps': 'true'
ports:
- "${DIAL_CORE_HOST_PORT}:8080"
volumes:
- ${DIAL_DIR:-.}/core:/app/config
- ${DIAL_DIR:-.}/core-logs:/app/log
- ${DIAL_DIR:-.}/core-data:/app/data
- ./settings:/opt/settings
depends_on:
- redis
restart: always
Environment variables
All aidial.* variables override their corresponding keys in settings.json. See Configuration precedence for override rules.
| Variable | settings.json key | Description | Reference |
|---|---|---|---|
JAVA_OPTS | — | JVM options. Points to the gflog.xml logging config. | — |
aidial.config.files | config.files | Path to the dynamic config.json. | Config Reload |
aidial.identityProviders.keycloak.jwksUrl | identityProviders.keycloak.jwksUrl | JWKS endpoint for JWT validation. | Identity Providers |
aidial.identityProviders.keycloak.rolePath | identityProviders.keycloak.rolePath | JWT claim path for user roles. | Identity Providers |
aidial.access.admin.rules | access.admin.rules | Rules matching JWT claims for admin access. | Access Control |
aidial.identityProviders.keycloak.loggingKey | identityProviders.keycloak.loggingKey | JWT claim used for user identification in logs. | Identity Providers |
aidial.identityProviders.keycloak.loggingSalt | identityProviders.keycloak.loggingSalt | Salt for hashing user info in logs. | Identity Providers |
aidial.encryption.secret | encryption.secret | AES encryption secret. Injected from .env. | Encryption |
aidial.encryption.key | encryption.key | AES encryption key. Injected from .env. | Encryption |
aidial.redis.singleServerConfig.address | redis.singleServerConfig.address | Redis connection address. | Redis |
aidial.storage.provider | storage.provider | Blob storage provider. | Storage |
aidial.storage.prefix | storage.prefix | Base prefix for stored resources. | Storage |
aidial.storage.bucket | storage.bucket | Storage bucket name. | Storage |
aidial.storage.createBucket | storage.createBucket | Create the bucket on startup if missing. | Storage |
aidial.storage.overrides | storage.overrides | Storage property overrides (jclouds). | Storage |
aidial.applications.includeCustomApps | applications.includeCustomApps | Include custom apps in listing endpoint. | Access Control |
Volume mounts
| Mount | Purpose |
|---|---|
${DIAL_DIR:-.}/core:/app/config | config.json |
${DIAL_DIR:-.}/core-logs:/app/log | Log output directory |
${DIAL_DIR:-.}/core-data:/app/data | Filesystem blob storage |
./settings:/opt/settings | gflog.xml |
DIAL_DIR lets the host-side paths be relocated; it defaults to the compose file's own directory.
Differences from quick start
| Aspect | Quick Start | Advanced |
|---|---|---|
| Configuration method | AIDIAL_SETTINGS env var pointing to settings.json | aidial.* env var overrides (no AIDIAL_SETTINGS) |
| Identity providers | disableJwtVerification: true | Keycloak JWKS validation |
| Encryption | Not configured | encryption.secret and encryption.key from .env |
| Custom apps | Not enabled | includeCustomApps: true |
Redis
redis:
image: redis:7.2.4-alpine3.19
restart: always
ports:
- "6600:6379"
command: >
redis-server
--maxmemory 2000mb
--maxmemory-policy volatile-lfu
--save ""
--appendonly no
--loglevel warning
mem_limit: 2200M
The Redis configuration is identical to the quick start except the host port maps to 6600 instead of 6379 to avoid conflicts when running both setups simultaneously.
See Redis connection settings for DIAL Core's redis.* configuration in settings.json.
Themes
themes:
image: epam/ai-dial-chat-themes:0.19.1
platform: linux/amd64
ports:
- "3101:8080"
Static file server for Chat theme CSS, images, and configuration. See epam/ai-dial-chat-themes.
Further reading
- Docker Compose advanced setup: Authentication — Keycloak and Chat auth configuration
- Admin Panel — Admin Backend and Frontend services
- Adapters — OpenAI adapter
- Static settings — the static settings that configure the Core process
- .env reference — the .env variables Compose setups substitute