🖥️ Docker Host
Einleitung
Die Gruppe Adler verfügt über einen Dedicated Server auf welchem zwei Virtuelle Maschinen laufen. Eine dieser VMs ist der Docker Host, auf welchem Services wie Blechadler, Homepage, CMS, Forum, API, Slotting und einige weitere Tools als jeweils ein/mehrere Docker Container laufen.
Zugriff auf VM
Genaueres zum Zugriff gibt es hier(öffnet in neuem Fenster).
Die wichtigsten Container
Alle Applikationen (ein oder mehrere zusammenhörigen Container) sind grundsätzlich unabhängig von einander aufgebaut. Hierbei gibt es aber einige Ausnahmen:
Reverse Proxy
Da mehrere Applikationen von außen auf Port 80 (http) / 443 (https) erreichbar sein sollen, muss ein reverse proxy zum Einsatz kommen. Hierfür kommt nginx-proxy(öffnet in neuem Fenster) und nginx-proxy-le(öffnet in neuem Fenster) (für das automatische Lösen von Let's Encrypt Zertifikaten) zum Einsatz.
Alle Container die nun auch per http(s) erreichbar sein sollen, müssen nur noch zwei Anforderungen erfüllen:
- Dem
nginx-proxy
Docker Netzwerk hinzugefügt sein. - Folgende Environment Variablen gesetzt haben (Hierbei natürlich
foo
durch korrekten Wert ersetzen):VIRTUAL_HOST=foo.gruppe-adler.de,www.foo.gruppe-adler.de
LETSENCRYPT_HOST=foo.gruppe-adler.de
Watchtower
Um die Entwicklung zu vereinfachen und ein Continuous Deployment zu gewährleisten, wird Watchtower(öffnet in neuem Fenster) eingesetzt. Dieser Container prüft periodisch ob auf Docker Hub eine neuere Versionen eines verwendeten Images zu Verfügung steht. Falls eine neue Version gefunden wurde, lädt watchtower das neue Image und updated den betroffenen Container komplett automatisch.
Bei uns ist es so eingestellt, dass nur Container, bei denen es explizit eingeschaltet wurde, von Watchtower geupdated werden. Dies erfolgt durch das setzen des com.centurylinklabs.watchtower.enable=true
label(öffnet in neuem Fenster). Mehr dazu lässt sich in der watchtower Dokumentation(öffnet in neuem Fenster) lesen.
Docker Compose Files
Alle Docker Compose Konfigurationsdateien lassen sich unter /etc/docker-configs/
finden. Der gundlegende Aufbau ist wie folgt:
/etc/docker-configs
├── homepage Hier befindet sich alles zur Homepage
│
├── blechadler Hier befinden sich alles zum Blechadler
│ ├── docker-compose.yml Docker Compose Konfiguration für Blechadler
│ └── volumes Enthält soft links zu allen docker volumes für Blechadler
│ ├── [...]
│ └── config Link zum config volume
│
└── [...]
Cheat Sheet
VM neuststarten
reboot
Alle Container auflisten
docker container ls -a
Container Logs einsehen
docker logs foo
Hierbei natürlich foo durch den korrekten container namen ersetzten. Dieser kann in der Liste aller Container gefunden werden (siehe Alle Container auflisten)
Eine Applikation (neu-)starten
- In jeweilges Verzeichnis wechseln
cd /etc/docker-configs/foo
- Applikation starten
docker-compose up -d
Alle unbenutzen Images löschen
docker image rm $(docker image ls -q)
(Dieser Befehl versucht zwar alle Images zu löschen, kann aber Images, die aktuell in Benutzung sind nicht löschen 😅)