# Basis-Image mit Python
FROM python:3.11-slim

# Arbeitsverzeichnis erstellen
WORKDIR /app

# Port für Gunicorn
EXPOSE 8000

# Kopiere die requirements-Datei und installiere die Abhängigkeiten
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt

# Kopiere den gesamten Projektinhalt in das Arbeitsverzeichnis
COPY . .

# Umgebungsvariablen von Coolify / docker-compose übernehmen (zur Laufzeit)
ENV DB_HOST=$DB_HOST
ENV DB_PORT=$DB_PORT
ENV DB_USER=$DB_USER
ENV DB_PASSWORD=$DB_PASSWORD
ENV DB_DATABASE=$DB_DATABASE
ENV SECRET_KEY=$SECRET_KEY
ENV MAX_ATTEMPTS=$MAX_ATTEMPTS
ENV DAILY_RESET_UTC=$DAILY_RESET_UTC

# Nicht-root Benutzer aus Sicherheitsgründen
RUN useradd --create-home appuser && chown -R appuser:appuser /app
USER appuser

EXPOSE 8000

# Startbefehl (Production: Gunicorn)
# --preload: Die App (inkl. db.create_all() + Seed) wird einmal im Master geladen,
# bevor die Worker geforkt werden. Das verhindert den Startup-Race, bei dem mehrere
# Worker gleichzeitig dieselben Tabellen erstellen.
CMD ["gunicorn", "--bind", "0.0.0.0:8000", "--workers", "2", "--timeout", "120", "--preload", "wsgi:app"]
