Änderungsstand: 20253-08-18
Verfügbare Infos (wird fortlaufend vervollständigt):
- 1. Docker Compose Update Script
- 2. Cronjob für das Update Script erstellen
1. Docker Compose Update Script:
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: /home/dockervolumes/*
# Dateipfad: ~/scriptfiles/updatescript.sh
# Logfile: /home/updatelog.txt
# System-Update und Kernel-Check
sudo apt-get update && sudo apt-get upgrade -y
# Prüfen, ob ein Kernel-Update installiert wurde
if dpkg -l | grep -E 'linux-image-[0-9]+' | grep -q '^ii.*\ installed'; then
echo "Kernel-Update erkannt, Reboot wird durchgeführt..."
echo "Kernel-Update: $(date +%y-%m-%d_%H:%M:%S)" | sudo tee -a /home/updatelog.txt
sudo reboot
fi
cd /home/dockervolumes
readarray -d '' composeConfigs < <(find . -type f -name docker-compose.y* -print0)
for cfg in "${composeConfigs[@]}"; do
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.
Unter /home/updatelog.txt kann ich den Zeitpunkt der Updates einsehen. Mein erster Eintrag sieht folgendermaßen aus:
// Updates mit updatescript
d=23-08-06_23:48:43
Strg-x zum Beenden.
exit
2. Cronjob für die automatische Aktualisierung einrichten:
Möchte ich das Script täglich durchlaufen lassen, dann hilft folgendes (immer noch als root angemeldet):
sudo crontab -e
Folgendes am Ende der Datei einfügen (das Hashtag am Ende nicht vergessen):
0 2 * * * ~/scriptfiles/updatescript.sh >/dev/null 2>&1
#
STGR-x, y, Enter
Jetzt wird täglich 02:00 Uhr das Update-Script gestartet.
Täglich 02:10 Uhr wäre dann:
10 2 * * * ~/scriptfiles/updatescript.sh >/dev/null 2>&1
#
STGR-x, y, Enter
Möchte man nur einmal pro Woche am Montag updaten, dann:
0 5 * * 1 ~/scriptfiles/updatescript.sh >/dev/null 2>&1
#
STGR-x, y, Enter
Oder nur am 1. des Monats um 05:00 Uhr:
0 5 1 * * ~/scriptfiles/updatescript.sh >/dev/null 2>&1
#
STGR-x, y, Enter
sudo reboot