Deployment hinzugefügt
+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
|
||||||
|
```
|
||||||
Reference in New Issue
Block a user