stupa-pdf-api/Dockerfile

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"]