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
|
#!/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
|
set -euo pipefail
|
||||||
docker-compose down && docker-compose pull && docker-compose up -d >> /var/log/cron/update_ddns.log
|
IFS=$'\n\t'
|
||||||
|
|
||||||
cd /opt/docker/forgejo
|
# ---------- Konfiguration ----------
|
||||||
docker-compose down && docker-compose pull && docker-compose up -d >> /var/log/cron/update_forgejo.log
|
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
|
# ---------- Hilfsfunktion ----------
|
||||||
docker-compose down && docker-compose pull && docker-compose up -d >> /var/log/cron/update_jellyfin.log
|
log() {
|
||||||
|
local lvl=${1:-INFO}
|
||||||
|
local msg=${2:-}
|
||||||
|
echo "$(date '+%Y-%m-%d %H:%M:%S') [$lvl] $msg"
|
||||||
|
}
|
||||||
|
|
||||||
cd /opt/docker/nextcloud
|
# ---------- Log‑Verzeichnis anlegen ----------
|
||||||
docker-compose down && docker-compose pull && docker-compose build && docker-compose up -d >> /var/log/cron/update_nextcloud
|
mkdir -p "$LOG_DIR"
|
||||||
|
|
||||||
cd /opt/docker/vaultwarden
|
# ---------- Haupt‑Schleife ----------
|
||||||
docker-compose down && docker-compose pull && docker-compose up -d >> /var/log/cron/update_vaultwarden
|
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