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 <vibe@mistral.ai>
This commit is contained in:
gg committed 2026-09-13 19:47:42 +02:00
1 parent b268b301c1
commit fffa9d4a28
2 files changed
+24 -5

No files matched your search

+15 -5
View File
@@ -35,8 +35,11 @@ eingerichtet und betrieben wird.
Test-Server aus (Stufe 1). Test-Server aus (Stufe 1).
- Nach erfolgreicher Verifikation wird manuell auf den Prod-Server - Nach erfolgreicher Verifikation wird manuell auf den Prod-Server
deployt (Stufe 2). deployt (Stufe 2).
- In Prod wird der gesamte Code (Python + TypeScript) in das Docker-Image - In Prod wird der Python-Code in das App-Image kopiert. Der TypeScript-Quellcode
gebaut. Es wird kein Node.js, npm oder Python-venv auf dem Server benoetigt. 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`. - 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_SERVER_NAME=test.kbp_crm.mylocal.de
# NGINX_STATIC_DIR und NGINX_CONFIG_TEMPLATE_DIR werden in Prod nicht # NGINX_STATIC_DIR und NGINX_CONFIG_TEMPLATE_DIR werden in Prod nicht
# benoetigt (statische Dateien und Templates sind im Image). # 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_CERTS=/opt/kbcrm/test-prod/certs # Pfad zu SSL-Zertifikaten
NGINX_CERT=test-wildcard.mylocal.crt NGINX_CERT=test-wildcard.mylocal.crt
NGINX_CERT_KEY=test-wildcard.mylocal.key 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_CERTS=/opt/kbcrm/prod/certs
NGINX_CERT=wildcard.mylocal.crt NGINX_CERT=wildcard.mylocal.crt
NGINX_CERT_KEY=wildcard.mylocal.key 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 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_USE_SSL` | ja | SSL aktivieren (true/false) |
| `NGINX_HOST_PORT` | ja | Externer Port (443 fuer SSL, 8080 fuer no-SSL) | | `NGINX_HOST_PORT` | ja | Externer Port (443 fuer SSL, 8080 fuer no-SSL) |
| `NGINX_SERVER_NAME` | ja | Server-Name fuer NGINX-Konfiguration | | `NGINX_SERVER_NAME` | ja | Server-Name fuer NGINX-Konfiguration |
| `NGINX_CERTS` | ja | Pfad zu SSL-Zertifikaten (bind-mount) | | `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 | | `NGINX_CERT` | ja | Zertifikatsdatei. Bei SSL=false nicht verwendet, darf aber nicht geloescht werden (Platzhalter reicht) |
| `NGINX_CERT_KEY` | ja | Privater Schluessel | | `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_STATIC_DIR` | nein | Nur in Dev; in Prod im Image |
| `NGINX_CONFIG_TEMPLATE_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) | | `PYTHON_DB_DIR` | ja | Pfad zu SQLite-Datenbanken (bind-mount) |
+9
View File
@@ -10,6 +10,15 @@ COMPOSE_FILE=docker-compose.base.yaml:docker-compose.${BUILD_ENVIRONMENT}.yaml
# Parameter für NGINX-Server # Parameter für NGINX-Server
# SSL für NGINX aktivieren (true) oder deaktivieren (false). # SSL für NGINX aktivieren (true) oder deaktivieren (false).
# Bei false muss NGINX_HOST_PORT angepasst werden (z.B. 8080 statt 443). # 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_USE_SSL=true
NGINX_HOST_PORT=443 NGINX_HOST_PORT=443
NGINX_SERVER_NAME=kbp_crm.mylocal.de NGINX_SERVER_NAME=kbp_crm.mylocal.de