diff --git a/Deployment.md b/Deployment.md new file mode 100644 index 0000000..f3e022e --- /dev/null +++ b/Deployment.md @@ -0,0 +1,96 @@ +# Deployment + +## Überblick + +Der Production Build wird via `rsync` auf den Synology NAS übertragen und dort von einem `nginx:stable-alpine`-Container ausgeliefert. + +``` +ng build → dist/ → rsync → NAS → nginx-Container → NPM +``` + +## deploy.sh + +Im Projektroot liegt `deploy.sh` — führt Build und Deploy in einem Schritt aus: + +```bash +./deploy.sh +``` + +Inhalt: + +```bash +#!/bin/bash +set -e + +echo "==> Build..." +ng build + +echo "==> Deploy..." +rsync -av --delete dist/ang-university-httpclient/browser/ \ + hans@nas.neugasse.lan:/volume1/docker/landingpage/dist/ + +echo "==> Fertig." +``` + +`--delete` sorgt dafür dass veraltete Bundle-Dateien (Hash-basierte Dateinamen) auf dem NAS entfernt werden. + +## Manueller Build + +```bash +# Production Build (defaultConfiguration ist bereits "production") +ng build + +# Output prüfen +ls dist/ang-university-httpclient/browser/ + +# Alte URL darf nicht mehr im Build vorkommen +grep -r "directus.neugasse.lan" dist/ +# Erwartet: keine Treffer +``` + +## Manuelles Deploy + +```bash +rsync -av --delete dist/ang-university-httpclient/browser/ \ + hans@nas.neugasse.lan:/volume1/docker/landingpage/dist/ +``` + +## Docker-Container + +Der nginx-Container wird einmalig gestartet und läuft dauerhaft. +Nach einem Deploy muss der Container **nicht** neu gestartet werden — rsync schreibt direkt ins gemountete Volume. + +```bash +# Erststart +cd webserver-docker +docker compose up -d + +# Status prüfen +docker compose ps + +# Logs +docker compose logs -f +``` + +### docker-compose.yml (Kurzübersicht) + +```yaml +services: + nginx: + image: nginx:stable-alpine + ports: + - "9999:80" + volumes: + - ./dist:/usr/share/nginx/html:ro + - ./nginx.conf:/etc/nginx/conf.d/default.conf:ro +``` + +## Nach dem Deploy testen + +```bash +# API über NPM-Proxy prüfen +curl http://home.neugasse.lan/api/items/landingpage | python3 -m json.tool | head -10 + +# Browser: Hard Reload um Cache zu leeren +# Firefox / Chrome: Ctrl + Shift + R +``` \ No newline at end of file