Deploy
Schritt-für-Schritt: Web-Deploy, Schema-Migration, Infra-Änderungen, Docs — welches just-Recipe wann.
Automatischer No-op und Force-Deploy
Abschnitt betitelt „Automatischer No-op und Force-Deploy“deploy-web, deploy-migrate, deploy-infra und deploy-docs vergleichen den
aktuellen Git-Stand mit dem zuletzt erfolgreich deployten Stand ihres jeweiligen
Artefakts. Gibt es keine relevante Änderung und ist der zugehörige Dienst
gesund, endet das Recipe ohne Snapshot, Build oder Container-Neustart.
Ein Neuaufbau lässt sich bei Cache- oder Laufzeitproblemen ausdrücklich erzwingen:
just deploy-web-forcejust deploy-migrate-forcejust deploy-infra-forcejust deploy-docs-forcejust deploy-full bleibt der vollständige, immer erzwungene Neuaufbau. Für
reine .env-Änderungen wird kein Force-Build benötigt; dafür dient etwa
just restart-web.
Dokumentation deployen
Abschnitt betitelt „Dokumentation deployen“Die Astro-Starlight-Dokumentation läuft in Produktion als eigener
Docker-Compose-Service docs. Das Multi-Stage-Image baut die statischen Seiten
mit Node 24 und liefert sie anschließend über nginx im Container aus.
docs.md-vernetzt.de → Host-nginx (TLS) → 127.0.0.1:3001 → mdv-docs:80Der Host benötigt dafür weder Node/npm noch ein synchronisiertes
/var/www-Verzeichnis.
Einmaliger nginx-vHost
Abschnitt betitelt „Einmaliger nginx-vHost“server { listen 443 ssl; listen [::]:443 ssl; server_name docs.md-vernetzt.de;
location / { proxy_pass http://127.0.0.1:3001; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; }
ssl_certificate /etc/letsencrypt/live/md-vernetzt.de/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/md-vernetzt.de/privkey.pem; include /etc/letsencrypt/options-ssl-nginx.conf; ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;}
server { listen 80; listen [::]:80; server_name docs.md-vernetzt.de; return 301 https://$host$request_uri;}Nach einer einmaligen Prüfung mit nginx -t und einem nginx-Reload genügt für
alle weiteren Doku-Aktualisierungen:
just deploy-docsDas Recipe zieht main und prüft zunächst, ob sich relevante Docs-Quellen oder
Build-Abhängigkeiten geändert haben. Nur dann baut es mdv-docs:latest, ersetzt
ausschließlich den Docs-Container und zeigt anschließend dessen Status und
Start-Logs. Ein absichtlicher Neuaufbau ohne Änderung erfolgt mit
just deploy-docs-force.
Prüfung
Abschnitt betitelt „Prüfung“just pscurl -fsS http://127.0.0.1:3001/ >/dev/nullcurl -fsS https://docs.md-vernetzt.de/ >/dev/nullmdv-docs muss als laufend erscheinen; beide HTTP-Prüfungen müssen mit
Exit-Code 0 enden.