# server/Dockerfile
# 🔧 OPTIMIERT: Multi-Stage-Build für ein minimales und sicheres Produktions-Image

# Stage 1: Builder - Installiert Abhängigkeiten
FROM python:3.13-slim AS builder

WORKDIR /app

# Installiert nur die für den Build notwendigen Systemabhängigkeiten
RUN apt-get update \
    && apt-get install -y --no-install-recommends \
       libmariadb-dev-compat libmariadb-dev gcc \
    && rm -rf /var/lib/apt/lists/*

# Kopiert nur die requirements.txt, um den Docker-Cache optimal zu nutzen
COPY /server/requirements.txt .

# Installiert die Python-Pakete in ein separates Verzeichnis
RUN pip install --no-cache-dir --prefix="/install" -r requirements.txt

# Stage 2: Final - Das eigentliche Produktions-Image
FROM python:3.13-slim

# --- Arbeitsverzeichnis ---
WORKDIR /app

# Installiert nur die für die Laufzeit notwendigen Systemabhängigkeiten
RUN apt-get update \
    && apt-get install -y --no-install-recommends \
       libmariadb-dev-compat locales curl \
    && rm -rf /var/lib/apt/lists/*

# --- Locale konfigurieren ---
RUN sed -i 's/# de_DE.UTF-8 UTF-8/de_DE.UTF-8 UTF-8/' /etc/locale.gen \
    && locale-gen
ENV LANG=de_DE.UTF-8 \
    LC_ALL=de_DE.UTF-8

# Kopiert die installierten Pakete aus der Builder-Stage
COPY --from=builder /install /usr/local

# --- Applikationscode ---
# Kopiert den Server-Code in das Arbeitsverzeichnis
COPY server/ ./server
COPY models/ ./models

# --- Non-Root User anlegen und Rechte setzen ---
ARG USER_ID=1000
ARG GROUP_ID=1000
RUN groupadd -g ${GROUP_ID} infoscreen_taa \
    && useradd -u ${USER_ID} -g ${GROUP_ID} \
       --shell /bin/bash --create-home infoscreen_taa \
    && chown -R infoscreen_taa:infoscreen_taa /app
USER infoscreen_taa

# --- Port für die API exposed ---
EXPOSE 8000

# --- Startbefehl für Gunicorn ---
CMD ["gunicorn", "-w", "4", "-b", "0.0.0.0:8000", "server.wsgi:app"]

