ARG-Variablen durch feste Werte in FROM ersetzt — nicht per .env ueberschreibbar. PYTHON_VERSION, NODE_VERSION, NPM_VERSION, NGINX_VERSION aus .env, env-sample und Compose-Dateien entfernt. Deployment-Anleitung erstellt und entsprechend angepasst. Generated by Mistral Vibe. Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
59 lines
2.9 KiB
Docker
59 lines
2.9 KiB
Docker
# ── Stage: prod ──────────────────────────────────────────────────
|
|
# Build-Context ist das Repo-Root (.), daher muessen alle COPY-Pfade
|
|
# mit App_Server/ praefigiert werden.
|
|
# Python-Version fest im Dockerfile verankert — nicht per .env ueberschreibbar.
|
|
FROM python:slim-bookworm AS prod
|
|
RUN ln -sf /usr/share/zoneinfo/Europe/Berlin /etc/localtime
|
|
RUN apt-get clean && apt-get update && apt-get install -y locales
|
|
RUN echo "de_DE.UTF-8 UTF-8" >> /etc/locale.gen
|
|
RUN locale-gen
|
|
# Das Verzeichnis /usr/opt/pythonapp/env wird als Python-Umgebung (venv) verwendet.
|
|
# Es wird bewusst außerhalb des Verzeichnisses /usr/opt/pythonapp/App_Server erstellt,
|
|
# um die Python-Umgebung von den Anwendungsdateien zu trennen und das Virtual Environment nicht auf dem Host zu zeigen.
|
|
RUN mkdir -p /usr/opt/pythonapp/App_Server/root /usr/opt/pythonapp/env /usr/var/pythonappdata
|
|
WORKDIR /usr/opt/pythonapp
|
|
RUN python -m venv --upgrade-deps /usr/opt/pythonapp/env
|
|
COPY App_Server/root/requirements.txt /usr/opt/pythonapp/App_Server/root/requirements.txt
|
|
RUN /usr/opt/pythonapp/env/bin/pip install --no-cache-dir --upgrade pip -r /usr/opt/pythonapp/App_Server/root/requirements.txt
|
|
|
|
# Python-Anwendungscode ins Image kopieren (inkl. templates/index.html)
|
|
COPY App_Server/root/ /usr/opt/pythonapp/App_Server/root/
|
|
|
|
# Prod-Start-Script
|
|
COPY App_Server/scripts/init.sh /usr/opt/pythonapp/App_Server/scripts/init.sh
|
|
RUN chmod +x /usr/opt/pythonapp/App_Server/scripts/init.sh
|
|
|
|
ENTRYPOINT ["sh", "/usr/opt/pythonapp/App_Server/scripts/init.sh"]
|
|
|
|
# ── Stage: dev ───────────────────────────────────────────────────
|
|
FROM prod AS dev
|
|
# Node.js-Version fest im Dockerfile verankert.
|
|
|
|
# --- 2. Systemabhängigkeiten (für Python + Node.js) ---
|
|
RUN apt-get update && \
|
|
apt-get install -y --no-install-recommends \
|
|
git \
|
|
curl \
|
|
procps \
|
|
build-essential \
|
|
libpq-dev \
|
|
libfreetype6-dev \
|
|
libjpeg62-turbo-dev \
|
|
libxml2-dev \
|
|
libxslt1-dev \
|
|
sqlite3 \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
# --- 3. Node.js + npm installieren ---
|
|
RUN curl -fsSL https://deb.nodesource.com/setup_lts.x | bash - && \
|
|
apt-get install -y nodejs && \
|
|
npm install -g npm@latest
|
|
|
|
# --- 4. Dev-Start-Script kopieren (fuer Konsistenz, wird sonst per bind-mount bereitgestellt) ---
|
|
COPY App_Server/scripts/inittypescriptdev.sh /usr/opt/pythonapp/App_Server/scripts/inittypescriptdev.sh
|
|
RUN chmod +x /usr/opt/pythonapp/App_Server/scripts/inittypescriptdev.sh
|
|
|
|
ENTRYPOINT ["sh", "/usr/opt/pythonapp/App_Server/scripts/inittypescriptdev.sh"]
|
|
CMD ["/usr/opt/pythonapp/env/bin/python", "/usr/opt/pythonapp/App_Server/root/runserver.py", "-D"]
|
|
|