Zum Inhalt springen

Deploy

Schritt-für-Schritt: Web-Deploy, Schema-Migration, Infra-Änderungen, Docs — welches just-Recipe wann.

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:

Terminal-Fenster
just deploy-web-force
just deploy-migrate-force
just deploy-infra-force
just deploy-docs-force

just 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.

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:80

Der Host benötigt dafür weder Node/npm noch ein synchronisiertes /var/www-Verzeichnis.

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:

Terminal-Fenster
just deploy-docs

Das 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.

Terminal-Fenster
just ps
curl -fsS http://127.0.0.1:3001/ >/dev/null
curl -fsS https://docs.md-vernetzt.de/ >/dev/null

mdv-docs muss als laufend erscheinen; beide HTTP-Prüfungen müssen mit Exit-Code 0 enden.