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>
This commit is contained in:
@@ -1,16 +1,28 @@
|
||||
#!/bin/sh
|
||||
# Backup-Sidecar Entrypoint
|
||||
# Installiert den Cron-Job und startet crond im Vordergrund.
|
||||
# ==========================
|
||||
# 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
|
||||
|
||||
# Cron-Job: taeglich um 03:00 Uhr
|
||||
CRON_SCHEDULE="${BACKUP_CRON:-0 3 * * *}"
|
||||
echo "$CRON_SCHEDULE /bin/sh /scripts/backup.sh >> /backups/backup.log 2>&1" > /etc/crontabs/root
|
||||
BACKUP_HOUR="${BACKUP_HOUR:-3}" # Stunde (0-23) fuer das taegliche Backup
|
||||
HHMM=$(printf '%02d:00' "$BACKUP_HOUR")
|
||||
|
||||
echo "[$(date)] Backup-Sidecar gestartet. Naechste Sicherung: $CRON_SCHEDULE"
|
||||
echo "[$(date)] Backup-Sidecar gestartet (Shell-Scheduler, taeglich $HHMM)."
|
||||
echo "[$(date)] Backup-Verzeichnis: /backups Fotos: /data/photos"
|
||||
|
||||
# Ersten Backup-Lauf direkt beim Start ausfuehren (optional, auskommentieren wenn unerwuenscht)
|
||||
# /bin/sh /scripts/backup.sh
|
||||
|
||||
exec crond -f -l 6
|
||||
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
|
||||
|
||||
Reference in New Issue
Block a user