Init projekt
This commit is contained in:
30
Dockerfile
Normal file
30
Dockerfile
Normal file
@@ -0,0 +1,30 @@
|
||||
# 1. Basis-Image (entspricht pyproject.toml)
|
||||
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
|
||||
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.
|
||||
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.
|
||||
RUN uv pip install --system .
|
||||
|
||||
# 6. Kopiere den Rest des Codes (inkl. main.py)
|
||||
COPY . .
|
||||
|
||||
# 7. Expose Port (optional, da der Port im CMD-Befehl gebunden wird, aber gute Doku)
|
||||
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.
|
||||
CMD ["gunicorn", "main:app", "--bind", "0.0.0.0:80", "--workers", "4", "--worker-class", "uvicorn.workers.UvicornWorker"]
|
||||
Reference in New Issue
Block a user