Two services sharing a single image: - web: Chainlit chat interface on port 8000 - email-worker: IMAP polling agent (main.py) ./data is mounted for persistent storage (registrations + conversations). ./openspec is mounted read-only so knowledge-base markdown files can be edited on the host without rebuilding the image. Configuration via .env (see .env.example). https://claude.ai/code/session_015tJePX9eyQENYpJUF8XvvK
27 lines
777 B
YAML
27 lines
777 B
YAML
services:
|
|
|
|
# Web chat interface — Chainlit served at http://localhost:8000
|
|
web:
|
|
build: .
|
|
command: chainlit run chat_app.py --host 0.0.0.0 --port 8000
|
|
ports:
|
|
- "8000:8000"
|
|
env_file: .env
|
|
volumes:
|
|
# Persistent storage for conversations and completed registrations
|
|
- ./data:/app/data
|
|
# Knowledge-base markdown files — edit on the host, no rebuild needed
|
|
- ./openspec:/app/openspec:ro
|
|
restart: unless-stopped
|
|
|
|
# Email polling agent — checks the inbox every POLL_INTERVAL seconds
|
|
email-worker:
|
|
build: .
|
|
command: python main.py
|
|
env_file: .env
|
|
volumes:
|
|
# Shares the same data directory as the web service
|
|
- ./data:/app/data
|
|
- ./openspec:/app/openspec:ro
|
|
restart: unless-stopped
|