Files
GerbilManager/deploy/truenas/scripts/entrypoint.sh
Gulum 854da1a000
Some checks failed
CI / Backend Tests (.NET) (push) Successful in 1m8s
CI / Frontend Tests (Node/Vite) (push) Successful in 9m35s
CI / Docker Build & Push (push) Successful in 1m28s
CI / Deploy auf TrueNAS (Custom App) (push) Failing after 3s
fix(deploy): postgres:18-Mount /var/lib/postgresql + backup ohne cron
- db-Volume auf /var/lib/postgresql (v18 legt PGDATA in .../18/docker; Mount auf
  .../data laesst v18 nicht starten -> db unhealthy -> App-Rollback)
- Backup-Sidecar: Shell-Scheduler statt Alpine-crond (/etc/crontabs fehlt im
  Debian-postgres:18-Image -> Crash-Loop)

Verifiziert auf TrueNAS: Custom-App gerbilmanager RUNNING, 2370 Tiere, Port 8090.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-19 10:13:01 +02:00

29 lines
1.1 KiB
Bash

#!/bin/sh
# Backup-Sidecar Entrypoint
# ==========================
# Image-unabhaengiger Shell-Scheduler (kein cron noetig): laeuft im Vordergrund und
# stoesst backup.sh einmal taeglich zur konfigurierten Stunde an. Funktioniert auf
# Debian (postgres:18, GNU date) wie auf Alpine — der fruehere crond-Ansatz brauchte
# /etc/crontabs (Alpine-only) und crashte im Debian-Image.
set -e
BACKUP_HOUR="${BACKUP_HOUR:-3}" # Stunde (0-23) fuer das taegliche Backup
HHMM=$(printf '%02d:00' "$BACKUP_HOUR")
echo "[$(date)] Backup-Sidecar gestartet (Shell-Scheduler, taeglich $HHMM)."
echo "[$(date)] Backup-Verzeichnis: /backups Fotos: /data/photos"
while :; do
now=$(date +%s)
target=$(date -d "$HHMM" +%s 2>/dev/null || echo "")
if [ -z "$target" ]; then
# Fallback ohne GNU 'date -d': einfach 24h schlafen.
sleep 86400
else
[ "$target" -le "$now" ] && target=$(date -d "$HHMM tomorrow" +%s)
sleep "$((target - now))"
fi
echo "[$(date)] Starte Backup ..."
/bin/sh /scripts/backup.sh >> /backups/backup.log 2>&1 || echo "[$(date)] WARNUNG: backup.sh Exit $?"
done