feat: Update-Skript fuer Linux-Deployments (update.sh)
Stoppt den Docker-Stack, sichert lokale Aenderungen an docker-compose.yml per git stash (falls vorhanden), fuehrt git pull aus, spielt die Aenderungen zurueck und startet den Stack neu im Build-Modus. Bricht bei git-pull- oder Stash-Konflikten kontrolliert ab statt mit einem halb aktualisierten Stand weiterzumachen. Version 1.8.1. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
@@ -4,6 +4,17 @@ Alle nennenswerten Änderungen an diesem Projekt werden hier dokumentiert.
|
|||||||
Format angelehnt an [Keep a Changelog](https://keepachangelog.com/de/1.1.0/),
|
Format angelehnt an [Keep a Changelog](https://keepachangelog.com/de/1.1.0/),
|
||||||
Versionierung nach [Semantic Versioning](https://semver.org/lang/de/).
|
Versionierung nach [Semantic Versioning](https://semver.org/lang/de/).
|
||||||
|
|
||||||
|
## [1.8.1] – 2026-07-20
|
||||||
|
|
||||||
|
### Hinzugefügt
|
||||||
|
- `update.sh`: Update-Skript für Linux-Deployments – stoppt den Docker-
|
||||||
|
Stack, sichert lokale Änderungen an `docker-compose.yml` per
|
||||||
|
`git stash` (falls vorhanden), führt `git pull` aus, spielt die
|
||||||
|
Änderungen zurück und startet den Stack neu im Build-Modus. Bricht
|
||||||
|
bei einem `git pull`- oder Stash-Konflikt kontrolliert ab, statt mit
|
||||||
|
einem halb aktualisierten Stand weiterzumachen. In DEPLOYMENT.md unter
|
||||||
|
„Updates einspielen“ dokumentiert.
|
||||||
|
|
||||||
## [1.8.0] – 2026-07-19
|
## [1.8.0] – 2026-07-19
|
||||||
|
|
||||||
### Hinzugefügt
|
### Hinzugefügt
|
||||||
|
|||||||
@@ -225,6 +225,15 @@ Neue Datenbank-Migrationen (`db/migrations/*.sql`) werden beim Start
|
|||||||
automatisch und idempotent angewendet, bestehende Daten bleiben
|
automatisch und idempotent angewendet, bestehende Daten bleiben
|
||||||
erhalten.
|
erhalten.
|
||||||
|
|
||||||
|
Alternativ übernimmt `./update.sh` den kompletten Ablauf: Stack stoppen,
|
||||||
|
lokale Änderungen an `docker-compose.yml` per `git stash` sichern (falls
|
||||||
|
vorhanden), `git pull`, Änderungen zurückspielen, Stack neu bauen und
|
||||||
|
starten:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
./update.sh
|
||||||
|
```
|
||||||
|
|
||||||
## Backup
|
## Backup
|
||||||
|
|
||||||
Zwei Docker-Volumes enthalten alle persistenten Daten:
|
Zwei Docker-Volumes enthalten alle persistenten Daten:
|
||||||
|
|||||||
Generated
+2
-2
@@ -1,12 +1,12 @@
|
|||||||
{
|
{
|
||||||
"name": "canteen-menu",
|
"name": "canteen-menu",
|
||||||
"version": "1.8.0",
|
"version": "1.8.1",
|
||||||
"lockfileVersion": 3,
|
"lockfileVersion": 3,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"packages": {
|
||||||
"": {
|
"": {
|
||||||
"name": "canteen-menu",
|
"name": "canteen-menu",
|
||||||
"version": "1.8.0",
|
"version": "1.8.1",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@simplewebauthn/browser": "^13.3.0",
|
"@simplewebauthn/browser": "^13.3.0",
|
||||||
"@simplewebauthn/server": "^13.3.2",
|
"@simplewebauthn/server": "^13.3.2",
|
||||||
|
|||||||
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "canteen-menu",
|
"name": "canteen-menu",
|
||||||
"version": "1.8.0",
|
"version": "1.8.1",
|
||||||
"private": true,
|
"private": true,
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"predev": "node --env-file-if-exists=.env.local db/migrate.mjs && node --env-file-if-exists=.env.local scripts/bootstrap-admin.mjs",
|
"predev": "node --env-file-if-exists=.env.local db/migrate.mjs && node --env-file-if-exists=.env.local scripts/bootstrap-admin.mjs",
|
||||||
|
|||||||
@@ -0,0 +1,45 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
# Aktualisiert ein per Docker Compose betriebenes Deployment:
|
||||||
|
# Stack stoppen -> lokale docker-compose.yml-Änderungen sichern (git stash)
|
||||||
|
# -> git pull -> Änderungen zurückspielen -> Stack neu bauen und starten.
|
||||||
|
#
|
||||||
|
# Aufruf im Projektverzeichnis (dort, wo docker-compose.yml liegt):
|
||||||
|
# ./update.sh
|
||||||
|
|
||||||
|
set -euo pipefail
|
||||||
|
cd "$(dirname "$0")"
|
||||||
|
|
||||||
|
ENV_FILE=".env.local"
|
||||||
|
if [ ! -f "$ENV_FILE" ]; then
|
||||||
|
echo "Fehler: $ENV_FILE nicht gefunden. Bitte im Projektverzeichnis ausführen." >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "==> Stoppe laufenden Stack..."
|
||||||
|
docker compose --env-file "$ENV_FILE" down
|
||||||
|
|
||||||
|
STASHED=0
|
||||||
|
if ! git diff --quiet -- docker-compose.yml || ! git diff --cached --quiet -- docker-compose.yml; then
|
||||||
|
echo "==> Sichere lokale Änderungen an docker-compose.yml (git stash)..."
|
||||||
|
git stash push --message "update.sh: docker-compose.yml vor Pull gesichert" -- docker-compose.yml
|
||||||
|
STASHED=1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "==> Hole neueste Version (git pull)..."
|
||||||
|
git pull
|
||||||
|
|
||||||
|
if [ "$STASHED" -eq 1 ]; then
|
||||||
|
echo "==> Stelle lokale Änderungen an docker-compose.yml wieder her..."
|
||||||
|
if ! git stash pop; then
|
||||||
|
echo "Fehler: git stash pop hatte einen Konflikt in docker-compose.yml." >&2
|
||||||
|
echo "Bitte den Konflikt manuell auflösen (git status), danach Stack manuell starten:" >&2
|
||||||
|
echo " docker compose --env-file $ENV_FILE up -d --build" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "==> Baue und starte Stack neu..."
|
||||||
|
docker compose --env-file "$ENV_FILE" up -d --build
|
||||||
|
|
||||||
|
echo "==> Fertig. Status:"
|
||||||
|
docker compose ps
|
||||||
Reference in New Issue
Block a user