From 9566387db9145e5c494e3ae8c233d164a86082c4 Mon Sep 17 00:00:00 2001 From: Thorsten Date: Mon, 30 Mar 2026 19:59:16 +0200 Subject: [PATCH] . --- README.md | 119 ++++++++++++++++++++++----------- config.conf | 119 ++++++++++++++++++++++----------- shell_docker_compose_update.sh | 2 +- 3 files changed, 163 insertions(+), 77 deletions(-) diff --git a/README.md b/README.md index 7d6adab..8308f3e 100644 --- a/README.md +++ b/README.md @@ -34,85 +34,128 @@ Spart Bandbreite, Zeit und unnötige Layer-Downloads ## ⚙️ Konfiguration (`config.conf`) ```bash -# ========================================================= +# ========================================================== # DOCKER COMPOSE UPDATER - CONFIG -# ========================================================= +# ========================================================== -# --------------------------------------------------------- +# ---------------------------------------------------------- # PATH -# --------------------------------------------------------- +# ---------------------------------------------------------- -PATH_COMPOSE_DIR="/pfad/zu/deinen/stacks" # Basisverzeichnis der Stacks -PATH_COMPOSE_PATTERN="*compose*.yml" # Compose-Dateiname +# Basisverzeichnis der Stacks [ String ] +PATH_COMPOSE_DIR="/pfad/zu/deinen/stacks" + +# Compose-Dateiname [ String ] +PATH_COMPOSE_PATTERN="*compose*.yml" -# --------------------------------------------------------- +# ---------------------------------------------------------- # LOG -# --------------------------------------------------------- +# ---------------------------------------------------------- -LOG_FILE="/pfad/zum/log/update.log" # Log-Datei -LOG_LEVEL="INFO" # DEBUG [ INFO | WARN | ERROR ] +# Log-Datei [ String ] +LOG_FILE="/pfad/zum/log/update.log" + +# Log-Level [ DEBUG | INFO | WARN | ERROR ] +LOG_LEVEL="INFO" -# --------------------------------------------------------- +# ---------------------------------------------------------- # UPDATE -# --------------------------------------------------------- +# ---------------------------------------------------------- -UPDATE_DRY_RUN=false # Nur Simulation, keine Änderungen [ true | false ] -UPDATE_INCLUDE_STOPPED=true # Gestoppte Container updaten [ true | false ] -UPDATE_START_STOPPED=false # Danach wieder starten [ true | false ] +# Nur Simulation, keine Änderungen [ true | false ] +UPDATE_DRY_RUN_ENABLED=false + +# Gestoppte Container updaten [ true | false ] +UPDATE_INCLUDE_STOPPED=true + +# Danach wieder starten [ true | false ] +UPDATE_START_STOPPED=false -# --------------------------------------------------------- +# ---------------------------------------------------------- # REDEPLOY -# --------------------------------------------------------- -REDEPLOY_WAIT_HEALTHY=true # Warten bis Container healthy [ true | false ] -REDEPLOY_TIMEOUT=60 # Timeout in Sekunden [ Sekunden ] +# ---------------------------------------------------------- + +# Warten bis Container healthy [ true | false ] +REDEPLOY_WAIT_HEALTHY=true + +# Timeout in Sekunden [ Number ] +REDEPLOY_TIMEOUT=60 -# --------------------------------------------------------- +# ---------------------------------------------------------- # EXCLUDES -# --------------------------------------------------------- +# ---------------------------------------------------------- -EXCLUDE_STACKS=( # Liste mit ganzen Stacks die nicht geupdated werden +# Stacks vom Update ausschließen [ Array ] +EXCLUDE_STACKS=( "example_stack_1" "example_stack_2" ) -EXCLUDE_SERVICES=( # Liste mit einzelnen Containern die nicht geupdated werden +# Services vom Update ausschließen [ Array ] +EXCLUDE_SERVICES=( "example_container_1" "example_container_2" ) -# --------------------------------------------------------- +# ---------------------------------------------------------- # NTFY SETTINGS -# --------------------------------------------------------- +# ---------------------------------------------------------- -NTFY_ENABLED=true -NTFY_URL="https://ntfy.example.com/topic" +# NTFY Zusammenfassung senden [ true | false ] +NTFY_ENABLED=true + +# Server URL [ String ] +NTFY_URL="https://ntfy.example.com/topic" + +# Token [ String ] NTFY_TOKEN="DEIN_TOKEN" + +# Titel mitsenden (optional) [ String ] NTFY_TITLE="Docker Update ($(hostname))" + +# Tags mitsenden (optional) [ String ] NTFY_TAGS="docker,update" + +# Icon mitsenden (optional) [ String ] NTFY_IMAGE_URL="http://dein-server/host-icon.png" -NTFY_ONLY_ON_CHANGES=false # Nur senden wenn Updates vorhanden -NTFY_SHOW_VERSIONS=true # Versionsnummern anzeigen + +# Nur senden wenn Updates vorhanden [ true | false ] +NTFY_ONLY_ON_CHANGES=false + +# Versionsnummern anzeigen [ true | false ] +NTFY_SHOW_VERSIONS=true -# --------------------------------------------------------- +# ---------------------------------------------------------- # DOCKER CLEANUP -# --------------------------------------------------------- +# ---------------------------------------------------------- -CLEANUP_ENABLED=true # Aktivieren [ true | false ] -CLEANUP_ONLY_ON_UPDATE=true # Nur nach Updates ausführen [ true | false ] +# Prune Befehle ausführen [ true | false ] +CLEANUP_ENABLED=true -CLEANUP_IMAGES_ENABLED=true # Images löschen [ true | false ] -CLEANUP_IMAGES_MODE="unused" # Methode [ dangling | unused ] +# Nur nach erfolgten Updates ausführen [ true | false ] +CLEANUP_ONLY_ON_UPDATE=true -CLEANUP_CONTAINERS_ENABLED=true # Container löschen [ true | false ] -CLEANUP_VOLUMES_ENABLED=false # Volumes löschen [ true | false ] -CLEANUP_NETWORKS_ENABLED=true # Networks löschen [ true | false ] +# Images löschen [ true | false ] +CLEANUP_IMAGES_ENABLED=true + +# Image-Prune Modus [ dangling | unused ] +CLEANUP_IMAGES_MODE="unused" + +# Container löschen [ true | false ] +CLEANUP_CONTAINERS_ENABLED=true + +# Volumes löschen [ true | false ] +CLEANUP_VOLUMES_ENABLED=false + +# Networks löschen [ true | false ] +CLEANUP_NETWORKS_ENABLED=true ``` --- diff --git a/config.conf b/config.conf index 24c5fdd..a1bf37b 100644 --- a/config.conf +++ b/config.conf @@ -1,79 +1,122 @@ -# ========================================================= +# ========================================================== # DOCKER COMPOSE UPDATER - CONFIG -# ========================================================= +# ========================================================== -# --------------------------------------------------------- +# ---------------------------------------------------------- # PATH -# --------------------------------------------------------- +# ---------------------------------------------------------- -PATH_COMPOSE_DIR="/pfad/zu/deinen/stacks" # Basisverzeichnis der Stacks -PATH_COMPOSE_PATTERN="*compose*.yml" # Compose-Dateiname +# Basisverzeichnis der Stacks [ String ] +PATH_COMPOSE_DIR="/pfad/zu/deinen/stacks" + +# Compose-Dateiname [ String ] +PATH_COMPOSE_PATTERN="*compose*.yml" -# --------------------------------------------------------- +# ---------------------------------------------------------- # LOG -# --------------------------------------------------------- +# ---------------------------------------------------------- -LOG_FILE="/pfad/zum/log/update.log" # Log-Datei -LOG_LEVEL="INFO" # DEBUG [ INFO | WARN | ERROR ] +# Log-Datei [ String ] +LOG_FILE="/pfad/zum/log/update.log" + +# Log-Level [ DEBUG | INFO | WARN | ERROR ] +LOG_LEVEL="INFO" -# --------------------------------------------------------- +# ---------------------------------------------------------- # UPDATE -# --------------------------------------------------------- +# ---------------------------------------------------------- -UPDATE_DRY_RUN=false # Nur Simulation, keine Änderungen [ true | false ] -UPDATE_INCLUDE_STOPPED=true # Gestoppte Container updaten [ true | false ] -UPDATE_START_STOPPED=false # Danach wieder starten [ true | false ] +# Nur Simulation, keine Änderungen [ true | false ] +UPDATE_DRY_RUN_ENABLED=false + +# Gestoppte Container updaten [ true | false ] +UPDATE_INCLUDE_STOPPED=true + +# Danach wieder starten [ true | false ] +UPDATE_START_STOPPED=false -# --------------------------------------------------------- +# ---------------------------------------------------------- # REDEPLOY -# --------------------------------------------------------- -REDEPLOY_WAIT_HEALTHY=true # Warten bis Container healthy [ true | false ] -REDEPLOY_TIMEOUT=60 # Timeout in Sekunden [ Sekunden ] +# ---------------------------------------------------------- + +# Warten bis Container healthy [ true | false ] +REDEPLOY_WAIT_HEALTHY=true + +# Timeout in Sekunden [ Number ] +REDEPLOY_TIMEOUT=60 -# --------------------------------------------------------- +# ---------------------------------------------------------- # EXCLUDES -# --------------------------------------------------------- +# ---------------------------------------------------------- -EXCLUDE_STACKS=( # Liste mit ganzen Stacks die nicht geupdated werden +# Stacks vom Update ausschließen [ Array ] +EXCLUDE_STACKS=( "example_stack_1" "example_stack_2" ) -EXCLUDE_SERVICES=( # Liste mit einzelnen Containern die nicht geupdated werden +# Services vom Update ausschließen [ Array ] +EXCLUDE_SERVICES=( "example_container_1" "example_container_2" ) -# --------------------------------------------------------- +# ---------------------------------------------------------- # NTFY SETTINGS -# --------------------------------------------------------- +# ---------------------------------------------------------- -NTFY_ENABLED=true -NTFY_URL="https://ntfy.example.com/topic" +# NTFY Zusammenfassung senden [ true | false ] +NTFY_ENABLED=true + +# Server URL [ String ] +NTFY_URL="https://ntfy.example.com/topic" + +# Token [ String ] NTFY_TOKEN="DEIN_TOKEN" + +# Titel mitsenden (optional) [ String ] NTFY_TITLE="Docker Update ($(hostname))" + +# Tags mitsenden (optional) [ String ] NTFY_TAGS="docker,update" + +# Icon mitsenden (optional) [ String ] NTFY_IMAGE_URL="http://dein-server/host-icon.png" -NTFY_ONLY_ON_CHANGES=false # Nur senden wenn Updates vorhanden -NTFY_SHOW_VERSIONS=true # Versionsnummern anzeigen + +# Nur senden wenn Updates vorhanden [ true | false ] +NTFY_ONLY_ON_CHANGES=false + +# Versionsnummern anzeigen [ true | false ] +NTFY_SHOW_VERSIONS=true -# --------------------------------------------------------- +# ---------------------------------------------------------- # DOCKER CLEANUP -# --------------------------------------------------------- +# ---------------------------------------------------------- -CLEANUP_ENABLED=true # Aktivieren [ true | false ] -CLEANUP_ONLY_ON_UPDATE=true # Nur nach Updates ausführen [ true | false ] +# Prune Befehle ausführen [ true | false ] +CLEANUP_ENABLED=true -CLEANUP_IMAGES_ENABLED=true # Images löschen [ true | false ] -CLEANUP_IMAGES_MODE="unused" # Methode [ dangling | unused ] +# Nur nach erfolgten Updates ausführen [ true | false ] +CLEANUP_ONLY_ON_UPDATE=true -CLEANUP_CONTAINERS_ENABLED=true # Container löschen [ true | false ] -CLEANUP_VOLUMES_ENABLED=false # Volumes löschen [ true | false ] -CLEANUP_NETWORKS_ENABLED=true # Networks löschen [ true | false ] \ No newline at end of file +# Images löschen [ true | false ] +CLEANUP_IMAGES_ENABLED=true + +# Image-Prune Modus [ dangling | unused ] +CLEANUP_IMAGES_MODE="unused" + +# Container löschen [ true | false ] +CLEANUP_CONTAINERS_ENABLED=true + +# Volumes löschen [ true | false ] +CLEANUP_VOLUMES_ENABLED=false + +# Networks löschen [ true | false ] +CLEANUP_NETWORKS_ENABLED=true \ No newline at end of file diff --git a/shell_docker_compose_update.sh b/shell_docker_compose_update.sh index 2d7dcf1..d9c8624 100644 --- a/shell_docker_compose_update.sh +++ b/shell_docker_compose_update.sh @@ -87,7 +87,7 @@ is_running() { } run_cmd() { - if [ "$UPDATE_DRY_RUN" = true ]; then + if [ "$UPDATE_DRY_RUN_ENABLED" = true ]; then log DEBUG "[DRY RUN] $*" else eval "$@"