110 lines
1.8 KiB
Bash
110 lines
1.8 KiB
Bash
#!/bin/bash
|
|
|
|
set -Eeuo pipefail
|
|
|
|
APP_DIR="/opt/picpeak"
|
|
BACKUP_DIR="/root/picpeak-backups"
|
|
LOG_FILE="/var/log/picpeak-update.log"
|
|
RETENTION_DAYS=30
|
|
|
|
DATE=$(date +"%Y-%m-%d_%H-%M-%S")
|
|
|
|
mkdir -p "$BACKUP_DIR"
|
|
|
|
exec > >(tee -a "$LOG_FILE") 2>&1
|
|
|
|
echo ""
|
|
echo "================================================="
|
|
echo " PicPeak Update gestartet: $DATE"
|
|
echo "================================================="
|
|
|
|
cd "$APP_DIR"
|
|
|
|
# Git Safe Directory
|
|
git config --global --add safe.directory "$APP_DIR" >/dev/null 2>&1 || true
|
|
|
|
# Prüfungen
|
|
[ -d ".git" ] || { echo "FEHLER: Kein Git Repository"; exit 1; }
|
|
|
|
echo ""
|
|
echo "1. Dateibackup erstellen..."
|
|
|
|
tar -czf \
|
|
"$BACKUP_DIR/picpeak-files-$DATE.tar.gz" \
|
|
"$APP_DIR"
|
|
|
|
echo "OK"
|
|
|
|
echo ""
|
|
echo "2. Datenbank sichern..."
|
|
|
|
DB_USER=$(grep '^DB_USER=' .env | cut -d= -f2)
|
|
DB_NAME=$(grep '^DB_NAME=' .env | cut -d= -f2)
|
|
|
|
docker exec picpeak-postgres \
|
|
pg_dump -U "$DB_USER" "$DB_NAME" \
|
|
> "$BACKUP_DIR/picpeak-db-$DATE.sql"
|
|
|
|
echo "OK"
|
|
|
|
echo ""
|
|
echo "3. Git Update..."
|
|
|
|
git pull
|
|
|
|
echo "OK"
|
|
|
|
echo ""
|
|
echo "4. Docker Images neu bauen..."
|
|
|
|
docker compose build --no-cache
|
|
|
|
echo "OK"
|
|
|
|
echo ""
|
|
echo "5. Container starten..."
|
|
|
|
docker compose up -d
|
|
|
|
echo "OK"
|
|
|
|
echo ""
|
|
echo "6. Healthcheck..."
|
|
|
|
sleep 20
|
|
|
|
docker compose ps
|
|
|
|
if docker compose ps | grep -q unhealthy; then
|
|
echo "FEHLER: Mindestens ein Container unhealthy"
|
|
exit 1
|
|
fi
|
|
|
|
echo "OK"
|
|
|
|
echo ""
|
|
echo "7. Alte Docker Images bereinigen..."
|
|
|
|
docker image prune -f
|
|
|
|
echo "OK"
|
|
|
|
echo ""
|
|
echo "8. Alte Backups löschen (> $RETENTION_DAYS Tage)..."
|
|
|
|
find "$BACKUP_DIR" -type f -mtime +$RETENTION_DAYS -delete
|
|
|
|
echo "OK"
|
|
|
|
echo ""
|
|
echo "================================================="
|
|
echo " Update erfolgreich abgeschlossen"
|
|
echo "================================================="
|
|
echo ""
|
|
|
|
echo "Aktive Container:"
|
|
docker compose ps
|
|
|
|
echo ""
|
|
echo "Neueste Backups:"
|
|
ls -lh "$BACKUP_DIR" | tail -10 |