Files
Doormilexpress_console/docker-compose.yml
2026-08-19 17:08:45 +05:30

48 lines
1.5 KiB
YAML

# Local-only stack for the Doormile AI retrieval sidecar.
#
# This is DEV TOOLING. The production image is still the static nginx build in
# Dockerfile — nothing here is deployed, and the console works with this stack
# absent (the bot falls back to its deterministic matcher when REACT_APP_AI_URL
# is unset or unreachable).
#
# docker compose up -d start Chroma + the sidecar
# npm --prefix services/ai run seed build the collections
#
services:
chroma:
image: chromadb/chroma:latest
container_name: doormile-chroma
ports:
- '8000:8000'
volumes:
# Bind-mounted so embeddings survive a container rebuild. Gitignored.
- ./.chroma:/chroma/chroma
environment:
- IS_PERSISTENT=TRUE
- ANONYMIZED_TELEMETRY=FALSE
healthcheck:
test: ['CMD', 'curl', '-f', 'http://localhost:8000/api/v2/heartbeat']
interval: 10s
timeout: 5s
retries: 5
ai-sidecar:
image: node:20
container_name: doormile-ai
working_dir: /app
command: sh -c "npm install --no-audit --no-fund && node index.js"
ports:
- '8787:8787'
volumes:
- ./services/ai:/app
# The MiniLM weights (~25MB) are downloaded once and cached here rather
# than re-fetched on every container start.
- ./.cache/transformers:/app/.cache
environment:
- CHROMA_URL=http://chroma:8000
- PORT=8787
- TRANSFORMERS_CACHE=/app/.cache
depends_on:
chroma:
condition: service_healthy