Add Docker Compose setup

Multi-stage Dockerfile builds the React frontend then serves everything
from a single Python container. settings.json persists via a named volume.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Space-Banane
2026-06-26 15:40:08 +02:00
parent 20f06d0a57
commit 678110d9e9
3 changed files with 33 additions and 1 deletions
+17
View File
@@ -0,0 +1,17 @@
FROM node:22-alpine AS build
WORKDIR /app/frontend
COPY frontend/package*.json ./
RUN npm ci
COPY frontend/ ./
RUN npm run build
FROM python:3.12-slim
WORKDIR /app
COPY requirements.txt ./
RUN pip install --no-cache-dir -r requirements.txt
COPY backend/ ./backend/
COPY --from=build /app/frontend/dist ./frontend/dist
VOLUME ["/app/data"]
ENV SETTINGS_PATH=/app/data/settings.json
EXPOSE 8000
CMD ["uvicorn", "backend.main:app", "--host", "0.0.0.0", "--port", "8000"]
+2 -1
View File
@@ -1,9 +1,10 @@
import json
import os
import secrets
from datetime import datetime, timezone
from pathlib import Path
SETTINGS_PATH = Path(__file__).parent.parent / "settings.json"
SETTINGS_PATH = Path(os.environ.get("SETTINGS_PATH", Path(__file__).parent.parent / "settings.json"))
def _now():
+14
View File
@@ -0,0 +1,14 @@
services:
app:
build: .
ports:
- "8000:8000"
volumes:
- data:/app/data
environment:
SETTINGS_PATH: /app/data/settings.json
OPENAI_MODEL: gpt-4.1
restart: unless-stopped
volumes:
data: