From 1e2082b642570f85439a11648dbc35c3a2ba80e7 Mon Sep 17 00:00:00 2001 From: michael Date: Mon, 15 Dec 2025 14:34:18 -0600 Subject: [PATCH] Add Docker support for backend MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Add Dockerfile for Python 3.12-slim based backend image - Add docker-compose.yml for service orchestration - Add .dockerignore to optimize build context - Include health check and reference docs in container 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 --- .dockerignore | 17 +++++++++++++++++ backend/Dockerfile | 29 +++++++++++++++++++++++++++++ docker-compose.yml | 19 +++++++++++++++++++ 3 files changed, 65 insertions(+) create mode 100644 .dockerignore create mode 100644 backend/Dockerfile create mode 100644 docker-compose.yml diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..9519155 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,17 @@ +__pycache__/ +*.py[cod] +venv/ +.venv/ +.env +.env.local +backend/.env +backend/.env.local +.idea/ +.vscode/ +.DS_Store +.git/ +frontend/ +specs/ +test_files/ +*.md +!reference_docs/**/*.md diff --git a/backend/Dockerfile b/backend/Dockerfile new file mode 100644 index 0000000..0d129e0 --- /dev/null +++ b/backend/Dockerfile @@ -0,0 +1,29 @@ +FROM python:3.12-slim + +WORKDIR /app + +ENV PYTHONDONTWRITEBYTECODE=1 +ENV PYTHONUNBUFFERED=1 + +# Install curl for healthcheck +RUN apt-get update && apt-get install -y --no-install-recommends curl \ + && rm -rf /var/lib/apt/lists/* + +# Copy requirements first for layer caching +COPY backend/requirements.txt . + +# Install dependencies +RUN pip install --no-cache-dir -r requirements.txt + +# Copy application code +COPY backend/app/ ./app/ + +# Copy reference docs into the image +COPY reference_docs/ ./reference_docs/ + +# Set reference docs path for container +ENV REFERENCE_DOCS_PATH=/app/reference_docs + +EXPOSE 8000 + +CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "8000"] diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..b72f100 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,19 @@ +services: + backend: + build: + context: . + dockerfile: backend/Dockerfile + ports: + - "8000:8000" + env_file: + - backend/.env + environment: + - HOST=0.0.0.0 + - PORT=8000 + healthcheck: + test: ["CMD", "curl", "-f", "http://localhost:8000/health"] + interval: 30s + timeout: 10s + retries: 3 + start_period: 10s + restart: unless-stopped