Alles schön verpackt: Meine Docker-Sammlung
Inzwischen habe ich sieben Anwendungen dockerisiert und veröffentliche meine docker-compose Konfigurationen, ua für Matomo, Gitea, Nextcloud und Drone.
Auf meinem Server betreibe ich eine Reihe von Anwendungen für meinen privaten Gebrauch. Nach anfänglicher Lernkurve ist jetzt alles in Docker-Container verpackt. Das hat für mich den Vorteil, dass ich Aktualisierungen sehr leicht einspielen kann und fast alle Nutzdaten auf meinem Server konzentriert unter einem Pfad liegen. Das macht die Datensicherung einfach.
Aktuell betreibe ich:
- den dynamischen Traefik Frontend-Proxy
- meine CI/CD Installation von drone.io
- meine Installation von Gitea - Git with a cup of tea auch für OAuth
- das Kommentarsystem für diese Webseite, auf der Basis von isso
- die Matomo/Piwik Statistiksoftware
- meine Nextcloud Instanz auf Docker
- diese Webseite software-berater.net
Die Docker Compose Konfigurationen findest du hier:
https://git.software-berater.net/christian/dockerfiles
Ich versuche, die Konfigurationen gleichförmig aufzubauen, was nicht zuletzt für mich den Merkaufwand reduziert. (Von wegen Kopf wie Sieb und so…) Also
- liegen alle Anwendungen in jeweils einem eigenen Unterverzeichnis
- verwende ich .env Dateien zur Ablage von vertraulichen Daten wie Passworten oä
- verwende ich ein systemd Template um die Anwendungen als Systemdienst zu etablieren
Die Anwendungen werden inzwischen durch Traefik nach außen bekannt gemacht, siehe dazu der neue Blogpost.
Automatische Neustarts
Einige Dienste (wie diese Webseite) sollen neu gestartet werden, wenn sich das Image ändert. Den Neustart ereiche ich mit einem systemd Watcher, der eine Datei auf dem Host beobachtet, welche durch den build-Prozess erneuert wird. Verändert sich die beobachtete Datei, so startet der Watcher den Service neu.
Der Watcher besteht aus einer watcher
Unit und einer path
Unit. Beide müssen für sich aktiviert und gestartet werden, um wirksam zu sein.
systemd watcher-Unit
systemd path-Unit
Was ist nicht dockerisiert?
Der lokale SMTP/IMAP-Mailserver ist nicht containerisiert. Gerade die SMTP-Binaries werden verwendet, um Nachrichten vom System zu bekommen. Auch wenn es mehr als 1.200 Images für Postfix auf Docker Hub gibt.