47 lines
1.4 KiB
Docker
47 lines
1.4 KiB
Docker
# ---------- 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"]
|