Deployment hinzugefügt

2026-06-26 09:34:48 +02:00
parent ca6673f7c4
commit 79cfed360b
+96
@@ -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
```