ARG PYTHON_VERSION ARG NODE_VERSION ARG NPM_VERSION # ── Stage: prod ────────────────────────────────────────────────── # Build-Context ist das Repo-Root (.), daher muessen alle COPY-Pfade # mit App_Server/ praefigiert werden. FROM python:${PYTHON_VERSION} 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 ARG NODE_VERSION ARG NPM_VERSION # --- 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_${NODE_VERSION}.x | bash - && \ apt-get install -y nodejs && \ npm install -g npm@${NPM_VERSION} # --- 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"]