#!/bin/bash # deploy.sh — Wird vom Webhook-Dienst bei GitHub-Push auf main aufgerufen. # Läuft auf dem HOST (nicht im Container). set -euo pipefail INSTALL_DIR="${INSTALL_DIR:-/opt/archivmail}" LOG_FILE="/var/log/archivmail/deploy.log" log() { echo "[$(date '+%Y-%m-%d %H:%M:%S')] $*" | tee -a "$LOG_FILE"; } log "=== Deploy gestartet (von GitHub Webhook) ===" cd "$INSTALL_DIR" # 1. Aktuellen Stand holen log "git pull origin main..." git pull origin main # 2. Neue Images bauen log "docker compose build..." docker compose build --no-cache # 3. Stack neustarten (zero-downtime: postgres bleibt laufen) log "docker compose up -d..." docker compose up -d --remove-orphans # 4. Alte ungenutzte Images aufräumen docker image prune -f log "=== Deploy abgeschlossen ==="