Änderungsstand: 2020-04-04
Hier werden alle von mir verwendeten Docker, mit nur einem Script installiert und/oder geupdated. Vorausgesetzt, die einzelnen *.yml-Dateien wurden in die dafür von mir vorgesehenen Ordner angelegt. Achtung! Auf x64 ausgelegt! Für ARM sollten einige Sachen angepasst werden, wie z.B. der MyWebSQL-Docker, der in meiner Version nur für x64 verfügbar ist.
Dieses Script, welches auf dem ersten Blick etwas „überladen“ wirkt, hat den entscheidenden Vorteil, dass man selbst entscheiden kann, was geupdated wird, indem man einfach alles nicht-benötigte mit # davor unter Kommentar setzt.
Am Ende gibt es noch ein ziemlich kurzes Script, wo alle erstellten *.yml-Configs im angegebenen, übergeordnetem Hauptverzeichnis ausgelesen, geupdated und die alten Images automatisch gelöscht werden. Dort werden aber auch ALLE vorhandenen Docker gestartet. Also sollte man vielleicht die yaml-Dateien der grad nicht benötigten Docker aus dem Verzeichnis /home/dockervolumes herausnehmen. Ich erstellte für mich dafür ein extra Verzeichnis (/home/dockervolumes-nicht-aktiv).
Wer sehen möchte, ob zum Schluß alles soweit funktioniert, sollte als erstes sicherstellen, dass auch alle Docker (nicht die Images) gestoppt und gelöscht sind.
sudo docker stop $(sudo docker ps -a -q)
sudo docker rm $(sudo docker ps -a -q)
Die einzelnen Docker-Compose Ordner mit den dazugehörigen *.yml-Dateien wurden durch abarbeiten der einzelnen Compose-Guides schon angelegt.
Das wären bei mir im Verzeichnis /home/dockervolumes/:
- bitwarden
- duplicati
- emby
- calibre-web
- heimdall
- mariadb
- minetest
- nextcloud
- phpmyadmin
- portainer
- wordpress
- glances
- mywebsql
- pihole
Schnellerstellung der Ordner (wird nicht mehr benötigt, da schon vorhanden):
mkdir -p /home/dockervolumes/{mariadb,phpmyadmin,nextcloud,calibre-web,bitwarden,duplicati,emby,glances,heimdall,portainer,wordpress,mywebsql,minetest,pihole}
Zuerst springe ich ins Verzeichnis /usr/local/bin und lege dort eine neue Datei an, Namens mydockercomposescript, füge die Scriptkommentare ein und starte das Script (im Script sind ALLE meine Docker-Compose-yml-Verzeichnisse inkl. der dazugehörigen Befehle hinterlegt):
cd /usr/local/bin && sudo nano mydockercomposescript
#!/bin/bash
# Ablageverzeichnis: /usr/local/bin/mydockercomposescript
# Variablendefinition
Start="docker-compose up -d"
Ausgabe="Script abgearbeitet!"
#
# Beginn der einzelnen Docker-Updates
##
cd /home/dockervolumes/mariadb
docker pull linuxserver/mariadb
$Start
#
cd /home/dockervolumes/phpmyadmin
docker pull phpmyadmin/phpmyadmin
$Start
#
cd /home/dockervolumes/nextcloud
docker pull linuxserver/nextcloud
$Start
#
cd /home/dockervolumes/wordpress
docker pull wordpress
$Start
#
cd /home/dockervolumes/bitwarden
docker pull bitwardenrs/server
$Start
#
cd /home/dockervolumes/duplicati
docker pull duplicati/duplicati
$Start
#
cd /home/dockervolumes/portainer
docker pull portainer/portainer
$Start
#
cd /home/dockervolumes/emby
docker pull emby/embyserver
$Start
#
cd /home/dockervolumes/heimdall
docker pull linuxserver/heimdall
$Start
#
cd /home/dockervolumes/minetest
docker pull linuxserver/minetest
$Start
#
cd /home/dockervolumes/glances
docker pull vimagick/glances
$Start
#
cd /home/dockervolumes/calibre-web
docker pull linuxserver/calibre-web
$Start
#
cd /home/dockervolumes/mywebsql
docker pull quantumobject/docker-mywebsql
$Start
#
cd /home/dockervolumes/pihole
docker pull pihole/pihole
$Start
##
#
#
echo "$Ausgabe"
Strg-x, y, Enter
bash mydockercomposescript
Fertig.
Jetzt kann der Befehl auch in den geplanten Aufgaben in OMV eingetragen werden.
bash mydockercomposescript
Hier noch ein Script, welches alle Docker, die mit Docker-Compose erstellt wurden, updated, wieder startet und die alten Images automatisch löscht. Es muss eigentlich nur das Übergeordnete Hauptverzeichnis der *.yml-Dateien angegeben werden (Zeile 5). Achtung! Der letzte Befehl (Zeile 15) muss das Argument (-f) beinhalten, da ansonsten eine erzwungene Eingabeaufforderung erscheinen würde, die das automatische Löschen der alten Images verhindern würde!
cd /usr/local/bin && sudo nano mydockerupdatecomposescript
#!/bin/bash
# Automatisches Update ALLER Docker in /home/dockervolumes/*
# Ablageverzeichnis: /usr/local/bin/mydockerupdatecomposescript
# Angabe Hauptverzeichnis
cd /home/dockervolumes
readarray -d '' composeConfigs < <(find . -type f -name docker-compose.y* -print0)
for cfg in "${composeConfigs[@]}"; do
docker-compose -f "$cfg" pull
docker-compose -f "$cfg" up -d
done
# Alte Images automatisch löschen
docker image prune -f
Strg-x, y, Enter
bash mydockerupdatecomposescript
Fertig.
Jetzt kann der Befehl auch in den geplanten Aufgaben in OMV eingetragen werden.
bash mydockerupdatecomposescript
Quelle: https://thibmaek.com/post/updating-all-docker-compose-container