undate Docker + workflows
Some checks failed
Build and Push Docker Image / build (push) Failing after 48s

This commit is contained in:
2025-11-19 14:27:38 +01:00
parent 37202aa2aa
commit b348d11764
4 changed files with 86 additions and 23 deletions

View File

@@ -1,30 +1,32 @@
# 1. Basis-Image (entspricht pyproject.toml)
# 1. Basis-Image
FROM python:3.12-slim
# 2. Setze den Arbeitsordner
WORKDIR /app
# 3. Installiere uv (dies ist das einzige Paket, das wir mit pip installieren müssen)
# uv ist für die Installation der anderen Pakete notwendig
# 3. Environment Variables setzen (verhindert .pyc Dateien und Pufferung)
ENV PYTHONDONTWRITEBYTECODE=1
ENV PYTHONUNBUFFERED=1
# 4. Installiere uv
RUN pip install --no-cache-dir uv
# 4. Kopiere nur die Konfigurationsdatei für den Installationsschritt
# Das nutzt den Docker Build Cache, wenn sich nur der Code ändert.
# 5. Dependencies installieren
COPY pyproject.toml .
# 5. Installiere die Abhängigkeiten aus der pyproject.toml mit uv
# Der Punkt '.' bedeutet "installiere die Abhängigkeiten für das aktuelle Verzeichnis,
# welches die pyproject.toml enthält". --system ist gut im Container.
# --system flag installiert in das globale Python des Containers
RUN uv pip install --system .
# 6. Kopiere den Rest des Codes (inkl. main.py)
# 6. Kopiere den Code
COPY . .
# 7. Expose Port (optional, da der Port im CMD-Befehl gebunden wird, aber gute Doku)
# 7. Erstelle einen Ordner für die persistente Datenbank
RUN mkdir -p /app/data
# 8. Expose Port
EXPOSE 80
# 8. Starte die Anwendung beim Container-Start (CMD, nicht RUN!)
# Wir nutzen Gunicorn als Master-Prozess und starten es direkt.
# Der 'uv run'-Befehl ist hier nicht notwendig, da gunicorn bereits über 'uv pip install'
# im Systempfad installiert wurde.
# 9. Startbefehl
# Wir setzen den DB_PATH standardmäßig auf den data Ordner, falls er nicht überschrieben wird
ENV DB_PATH="/app/data/hangman.db"
CMD ["gunicorn", "main:app", "--bind", "0.0.0.0:80", "--workers", "4", "--worker-class", "uvicorn.workers.UvicornWorker"]