feat: redid container update script to automatically update all under /opt/docker
This commit is contained in:
parent
18e8a7f87d
commit
6a7e308299
1 changed files with 47 additions and 13 deletions
|
|
@ -1,20 +1,54 @@
|
|||
#!/bin/bash
|
||||
cd /opt/docker/bentopdf
|
||||
docker-compose down && docker-compose pull && docker-compose up -d >> /var/log/cron/update_bentopdf.log
|
||||
# ────────────────────────────────────────────────────────────────────────
|
||||
# Zweck: Automatisches Prüfen und Anwenden von Updates für alle
|
||||
# Docker‑Compose‑Projekte unter /opt/docker/
|
||||
# ────────────────────────────────────────────────────────────────────────
|
||||
|
||||
cd /opt/docker/ddns
|
||||
docker-compose down && docker-compose pull && docker-compose up -d >> /var/log/cron/update_ddns.log
|
||||
set -euo pipefail
|
||||
IFS=$'\n\t'
|
||||
|
||||
cd /opt/docker/forgejo
|
||||
docker-compose down && docker-compose pull && docker-compose up -d >> /var/log/cron/update_forgejo.log
|
||||
# ---------- Konfiguration ----------
|
||||
BASE_DIR="/opt/docker" # Verzeichnis mit allen Compose‑Projekten
|
||||
LOG_DIR="/var/log/docker-update" # Ort für Log‑Dateien
|
||||
COMPOSE_CMD="docker-compose" # docker‑compose v1
|
||||
|
||||
cd /opt/docker/jellyfin
|
||||
docker-compose down && docker-compose pull && docker-compose up -d >> /var/log/cron/update_jellyfin.log
|
||||
# ---------- Hilfsfunktion ----------
|
||||
log() {
|
||||
local lvl=${1:-INFO}
|
||||
local msg=${2:-}
|
||||
echo "$(date '+%Y-%m-%d %H:%M:%S') [$lvl] $msg"
|
||||
}
|
||||
|
||||
cd /opt/docker/nextcloud
|
||||
docker-compose down && docker-compose pull && docker-compose build && docker-compose up -d >> /var/log/cron/update_nextcloud
|
||||
# ---------- Log‑Verzeichnis anlegen ----------
|
||||
mkdir -p "$LOG_DIR"
|
||||
|
||||
cd /opt/docker/vaultwarden
|
||||
docker-compose down && docker-compose pull && docker-compose up -d >> /var/log/cron/update_vaultwarden
|
||||
# ---------- Haupt‑Schleife ----------
|
||||
for proj_dir in "$BASE_DIR"/*/; do
|
||||
# Compose‑Datei vorhanden?
|
||||
if [[ -f "$proj_dir/docker-compose.yml" || -f "$proj_dir/docker-compose.yaml" ]]; then
|
||||
pushd "$proj_dir" >/dev/null
|
||||
|
||||
docker image prune -a -f >> /var/log/cron/docker_prune.log
|
||||
# ───── Log‑Datei für dieses Projekt ──────────────────────────────────────
|
||||
# (ohne `local`, weil wir uns nicht in einer Funktion befinden)
|
||||
log_file="${LOG_DIR}/$(basename "$proj_dir")-update.log"
|
||||
|
||||
log "INFO" "Starte Update in ${proj_dir%/}"
|
||||
echo "$(date '+%Y-%m-%d %H:%M:%S') [INFO] Update in ${proj_dir%/}" >> "$log_file"
|
||||
|
||||
# ───── 1. Container herunterfahren ─────────────────────────────────────────────
|
||||
$COMPOSE_CMD down >> "$log_file" 2>&1 || true
|
||||
|
||||
# ───── 2. Images pullen ───────────────────────────────────────────────────────
|
||||
$COMPOSE_CMD pull >> "$log_file" 2>&1
|
||||
|
||||
# ───── 3. Container neu starten ───────────────────────────────────────────────
|
||||
$COMPOSE_CMD up -d >> "$log_file" 2>&1
|
||||
|
||||
popd >/dev/null
|
||||
log "INFO" "Update für ${proj_dir%/} abgeschlossen."
|
||||
else
|
||||
log "INFO" "Keine docker-compose.yml in ${proj_dir%/} – überspringen."
|
||||
fi
|
||||
done
|
||||
|
||||
log "INFO" "Alle Projekte wurden aktualisiert."
|
||||
|
|
|
|||
Loading…
Reference in a new issue