Add Docker Compose setup for web chat and email worker

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
This commit is contained in:
Claude
2026-02-26 16:31:11 +00:00
parent 52901dd7c4
commit 6866d126cb
3 changed files with 68 additions and 0 deletions
+20
View File
@@ -0,0 +1,20 @@
FROM python:3.13-slim
# Install uv
COPY --from=ghcr.io/astral-sh/uv:latest /uv /uvx /usr/local/bin/
WORKDIR /app
# Install Python dependencies — cached independently of application code
COPY pyproject.toml uv.lock ./
RUN uv sync --frozen --no-dev --no-install-project
# Copy application source
COPY src/ ./src/
COPY chat_app.py main.py chainlit.toml ./
COPY public/ ./public/
# Make the venv's binaries (chainlit, python, etc.) available directly
ENV PATH="/app/.venv/bin:$PATH"
# data/ and openspec/ are expected to be mounted at runtime