From fffa9d4a2807759b315c70fcbf01ee76af3be7c0 Mon Sep 17 00:00:00 2001 From: Gerd Date: Sun, 13 Sep 2026 19:47:42 +0200 Subject: [PATCH] docs(deploy): Multi-Stage-Build korrekt beschrieben, SSL-Variablen-Hinweis ergaenzt Die Deploy-Anleitung sagte irrefuehrend "gesamter Code (Python + TypeScript)" im Image. Korrigiert auf den tatsaechlichen Multi-Stage-Build: nur das fertige JS-Bundle landet im NGINX-Image, nicht der TS-Quellcode. Zussaetzlich Hinweis in env-sample und Deployment-Anleitung, dass NGINX_CERTS/CERT/CERT_KEY auch bei SSL=false nicht geloescht werden duerfen, da docker-compose.base.yaml sie immer als Volume/Env bindet. Generated by Mistral Vibe. Co-Authored-By: Mistral Vibe --- Dokumentationen/Deployment-Anleitung.md | 20 +++++++++++++++----- env-sample | 9 +++++++++ 2 files changed, 24 insertions(+), 5 deletions(-) diff --git a/Dokumentationen/Deployment-Anleitung.md b/Dokumentationen/Deployment-Anleitung.md index 6e5fffb..736d052 100644 --- a/Dokumentationen/Deployment-Anleitung.md +++ b/Dokumentationen/Deployment-Anleitung.md @@ -35,8 +35,11 @@ eingerichtet und betrieben wird. Test-Server aus (Stufe 1). - Nach erfolgreicher Verifikation wird manuell auf den Prod-Server deployt (Stufe 2). -- In Prod wird der gesamte Code (Python + TypeScript) in das Docker-Image - gebaut. Es wird kein Node.js, npm oder Python-venv auf dem Server benoetigt. +- In Prod wird der Python-Code in das App-Image kopiert. Der TypeScript-Quellcode + wird waehrend des Docker-Builds in einer Multi-Stage-Build-Stage kompiliert + (tsc + rollup); in das finale NGINX-Image wird nur das fertige JS-Bundle + uebernommen, nicht der TypeScript-Quellcode. Es wird kein Node.js, npm oder + Python-venv auf dem Server benoetigt. - Der Deploy-Server benoetigt nur: `git`, `docker` und `docker compose`. --- @@ -126,6 +129,11 @@ NGINX_HOST_PORT=8443 # eigener Port fuer Test-Prod NGINX_SERVER_NAME=test.kbp_crm.mylocal.de # NGINX_STATIC_DIR und NGINX_CONFIG_TEMPLATE_DIR werden in Prod nicht # benoetigt (statische Dateien und Templates sind im Image). +# WICHTIG: Auch bei NGINX_USE_SSL=false duerfen NGINX_CERTS, NGINX_CERT und +# NGINX_CERT_KEY NICHT geloescht werden. docker-compose.base.yaml bindet +# ${NGINX_CERTS} immer als Volume (/etc/certs) ein — ein fehlender Wert +# fuehrt zu einem Compose-Fehler. Bei SSL=false reicht es, Platzhalterwerte +# zu setzen (z.B. NGINX_CERTS auf ein beliebiges Verzeichnis zeigen lassen). NGINX_CERTS=/opt/kbcrm/test-prod/certs # Pfad zu SSL-Zertifikaten NGINX_CERT=test-wildcard.mylocal.crt NGINX_CERT_KEY=test-wildcard.mylocal.key @@ -153,6 +161,8 @@ NGINX_SERVER_NAME=kbp_crm.mylocal.de NGINX_CERTS=/opt/kbcrm/prod/certs NGINX_CERT=wildcard.mylocal.crt NGINX_CERT_KEY=wildcard.mylocal.key +# Auch hier gilt: Bei NGINX_USE_SSL=false die Zertifikats-Variablen nicht +# loeschen, sondern Platzhalterwerte stehen lassen (s. Hinweis oben). PYTHON_DB_DIR=/opt/kbcrm/prod/data # eigene DB fuer Prod @@ -393,9 +403,9 @@ docker image prune -f | `NGINX_USE_SSL` | ja | SSL aktivieren (true/false) | | `NGINX_HOST_PORT` | ja | Externer Port (443 fuer SSL, 8080 fuer no-SSL) | | `NGINX_SERVER_NAME` | ja | Server-Name fuer NGINX-Konfiguration | -| `NGINX_CERTS` | ja | Pfad zu SSL-Zertifikaten (bind-mount) | -| `NGINX_CERT` | ja | Zertifikatsdatei | -| `NGINX_CERT_KEY` | ja | Privater Schluessel | +| `NGINX_CERTS` | ja | Pfad zu SSL-Zertifikaten (bind-mount). Auch bei SSL=false erforderlich — Compose bindet diesen Pfad immer als Volume ein | +| `NGINX_CERT` | ja | Zertifikatsdatei. Bei SSL=false nicht verwendet, darf aber nicht geloescht werden (Platzhalter reicht) | +| `NGINX_CERT_KEY` | ja | Privater Schluessel. Bei SSL=false nicht verwendet, darf aber nicht geloescht werden (Platzhalter reicht) | | `NGINX_STATIC_DIR` | nein | Nur in Dev; in Prod im Image | | `NGINX_CONFIG_TEMPLATE_DIR` | nein | Nur in Dev; in Prod im Image | | `PYTHON_DB_DIR` | ja | Pfad zu SQLite-Datenbanken (bind-mount) | diff --git a/env-sample b/env-sample index 318e9bc..e93dd8a 100644 --- a/env-sample +++ b/env-sample @@ -10,6 +10,15 @@ COMPOSE_FILE=docker-compose.base.yaml:docker-compose.${BUILD_ENVIRONMENT}.yaml # Parameter für NGINX-Server # SSL für NGINX aktivieren (true) oder deaktivieren (false). # Bei false muss NGINX_HOST_PORT angepasst werden (z.B. 8080 statt 443). +# +# WICHTIG: Auch wenn SSL deaktiviert wird (NGINX_USE_SSL=false), duerfen die +# Zertifikats-Variablen (NGINX_CERTS, NGINX_CERT, NGINX_CERT_KEY) NICHT geloescht +# werden. docker-compose.base.yaml bindet ${NGINX_CERTS} immer als Volume +# (/etc/certs) ein — ein fehlender Wert fuehrt zu einem Compose-Fehler. +# NGINX_CERT und NGINX_CERT_KEY werden ebenfalls immer als Umgebungsvariablen +# an den Container uebergeben; bei SSL=false werden sie nicht verwendet, muessen +# aber als Platzhalter erhalten bleiben. Es reicht, gueltige Platzhalterwerte +# einzutragen (z.B. NGINX_CERTS auf ein beliebiges Verzeichnis zeigen lassen). NGINX_USE_SSL=true NGINX_HOST_PORT=443 NGINX_SERVER_NAME=kbp_crm.mylocal.de