Initial commit - copied workspace after database cleanup
This commit is contained in:
61
server/Dockerfile
Normal file
61
server/Dockerfile
Normal file
@@ -0,0 +1,61 @@
|
||||
# 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"]
|
||||
|
||||
Reference in New Issue
Block a user