#!/bin/bash set -euo pipefail APP_DIR="/opt/picpeak" BACKUP_DIR="/root/picpeak-backups" LOG_FILE="/var/log/picpeak-update.log" DATE=$(date +"%Y-%m-%d_%H-%M-%S") mkdir -p "$BACKUP_DIR" exec > >(tee -a "$LOG_FILE") 2>&1 echo "=================================================" echo " PicPeak Update gestartet: $DATE" echo "=================================================" # Prüfen ob Verzeichnis existiert if [ ! -d "$APP_DIR" ]; then echo "FEHLER: $APP_DIR existiert nicht!" exit 1 fi cd "$APP_DIR" # Prüfen ob Git Repo if [ ! -d ".git" ]; then echo "FEHLER: Kein Git-Repository gefunden!" exit 1 fi # Prüfen ob Docker Compose vorhanden if ! command -v docker >/dev/null 2>&1; then echo "FEHLER: Docker nicht gefunden!" exit 1 fi echo "" echo "1. Backup erstellen..." tar -czf "$BACKUP_DIR/picpeak-backup-$DATE.tar.gz" "$APP_DIR" echo "Backup gespeichert:" echo "$BACKUP_DIR/picpeak-backup-$DATE.tar.gz" echo "" echo "2. Git Status prüfen..." git status echo "" echo "3. Neuen Code herunterladen..." git pull echo "" echo "4. Docker Container bauen..." docker compose build --no-cache echo "" echo "5. Container neu starten..." docker compose up -d echo "" echo "6. Healthcheck prüfen..." sleep 15 if docker compose ps | grep -q "unhealthy"; then echo "WARNUNG: Mindestens ein Container ist unhealthy!" docker compose ps exit 1 fi echo "" echo "7. Alte Docker Images bereinigen..." docker image prune -f echo "" echo "=================================================" echo " PicPeak Update erfolgreich abgeschlossen" echo "=================================================" docker compose ps