Docker-Compose-Update

Änderungsstand: 2023-07-31

Derzeit noch Test!

Ich verwende für meine Dockerupdates ein kleines Script. Ich muss bedenken, dass ALLE Docker, von denen sich in /dockervolumes die Scripte befinden, gestoppt, anschließend geupdated und gestartet werden, auch wenn diese nicht relevant sind. Soll heißen, dass die Compose-Files von Dockern, die keine Verwendung mehr haben oder absichtlich gestoppt wurden, nach dem Aufruf des Scriptes automatisch gestartet werden. Als Bonus kann man in einem Logfile schauen, wann das letzte Update mit diesem Script getätigt wurde.

Im Terminal als root anmelden:

sudo su
touch /home/updatelog.txt && echo // Updates mit "updatescript"  | tee -a /home/updatelog.txt
cd && mkdir -p scriptfiles
cd && cd scriptfiles && nano updatescript.sh

Folgendes eintragen und ggnf. anpassen:

#!/bin/bash
# Automatisches Update ALLER Docker der Docker-Compose-Scriptfiles: /dockervolumes/*
# Dateipfad: ~/scriptfiles/updatescript.sh
# Logfile: /home/updatelog.txt
cd /dockervolumes
readarray -d '' composeConfigs < <(find . -type f -name *.yml* -print0)
for cfg in "${composeConfigs[@]}"; do
  sudo docker-compose -f "$cfg" stop
  sudo docker-compose -f "$cfg" pull
  sudo docker-compose -f "$cfg" up -d
done
# Alte Images automatisch löschen
sudo docker image prune -f
#
## Logfile Eintrag (wenn nicht benötigt, dann # davor setzen)
echo d=$(date +%y-%m-%d_%H:%M:%S) | sudo tee -a /home/updatelog.txt
#

Strg-x, y, Enter

sudo chmod 700 updatescript.sh

Zum Aufruf des Scriptes folgenden Befehl eingeben:

sudo ./updatescript.sh

Es werden alle Docker, von denen sich die *.yml im Verzeichnis „/home/dockervolumes/“ vorhanden sind, geupdatet und die alten Images gelöscht.

Ich stoppe in diesem Script, bei meiner eigenen Verwendung, automatisch, vor der Aktualisierung der Docker, vorsichtshalber den Nextcloud-Docker, da sich dort die Datenbank mit drin befindet und diese demzufolge ebenfalls gestoppt wird. Dies dient zur Sicherheit, um einen Crash oder Datenverlust vorzubeugen, falls bei der Aktualisierung im selben Moment darauf geschrieben werden sollte. Nur interessant, wenn eine separate Datenbank betrieben wird. Und das ist hier der Fall. Also Zeile 8 und Zeile 9 und bei Bedarf auch die Zeilen 11 & Zeile 12, indem die ## entfernt werden. Die Docker starten nach Ablauf des Scriptes automatisch.

Unter /home/updatelog.txt kann man den Zeitpunkt der Updates einsehen. Mein erster Eintrag sieht folgendermaßen aus:

// Updates mit updatescript
d=21-05-04_23:44:03

Strg-x zum Beenden.

Dieses Script automatisiert starten:

Aufruf des Scriptes im OMV6:

  • System
    • Geplante Aufgaben
      • +Erstellen
        • (Beispiel für 02:29 Uhr täglich)
        • Aktiviert: Haken rein
        • Zeitpunkt der Ausführung: Bestimmter Zeitpunkt
        • Minute: 29
        • Stunde: 2
        • Tag des Monats: *
        • Monat: *
        • Wochentag: *
        • Benutzer: root
        • Kommando: ~/scriptfiles/updatescript.sh
      • Speichern –> Bestätigen

Die Updates aller Docker werden nun täglich 02:29 erledigt.

Erstelle eine Website wie diese mit WordPress.com
Jetzt starten