# ---------- Base ---------- FROM python:3.11-slim AS base ENV PYTHONDONTWRITEBYTECODE=1 \ PYTHONUNBUFFERED=1 # System deps (optional: tzdata for correct time) RUN apt-get update && apt-get install -y --no-install-recommends \ tzdata ca-certificates \ && rm -rf /var/lib/apt/lists/* WORKDIR /app # ---------- Dependencies ---------- COPY requirements.txt /app/requirements.txt RUN pip install --no-cache-dir -r /app/requirements.txt # ---------- App ---------- # Struktur-Annahme: # - src/ (alle .py Module, inkl. service_api.py, pdf_to_struct.py, pdf_filler.py, etc.) # - assets/ (qsm.pdf, vsm.pdf) COPY src/ /app/src/ COPY assets/ /app/assets/ # Falls deine Module relative Imports nutzen, src ins PYTHONPATH aufnehmen ENV PYTHONPATH=/app/src # pdf_filler.py sucht standardmäßig assets relativ zum Modul. # Wir überschreiben die Template-Pfade per ENV, da die PDFs im Build-Root unter /app/assets liegen. ENV QSM_TEMPLATE=/app/assets/qsm.pdf \ VSM_TEMPLATE=/app/assets/vsm.pdf # Optional: Master-Key / DB-Config kommen zur Laufzeit per -e oder .env (docker run --env-file) # ENV MASTER_KEY=change_me \ # MYSQL_HOST=mysql \ # MYSQL_PORT=3306 \ # MYSQL_DB=stupa \ # MYSQL_USER=stupa \ # MYSQL_PASSWORD=secret EXPOSE 8000 # ---------- Run ---------- # Starte die FastAPI # Hinweis: service_api.py muss in src/ liegen und die App als "app" exportieren. CMD ["uvicorn", "service_api:app", "--host", "0.0.0.0", "--port", "8000"]