Skripte

Ä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

Quelle: https://wiki.ubuntuusers.de/Cron/

Erstelle eine Website wie diese mit WordPress.com
Jetzt starten