# 🖥 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 (opens new window).

# 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 (opens new window) und nginx-proxy-le (opens new window) (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:

  1. Dem nginx-proxy Docker Netzwerk hinzugefügt sein.
  2. 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

container-structure

# Watchtower

Um die Entwicklung zu vereinfachen und ein Continuous Deployment zu gewährleisten, wird Watchtower (opens new window) 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 (opens new window). Mehr dazu lässt sich in der watchtower Dokumentation (opens new window) lesen.

# Docker Networks

soonTM

# 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 zu config volume │ └── [...]

# Cheat Sheet

# VM neuststarten

reboot

# Alle Container auflisten

docker ps -a
list-containers

# Eine Applikation (neu-)starten

  1. In jeweilges Verzeichnis wechseln cd /etc/docker-configs/foo
  2. Applikation starten docker-compose up -d

# Alle unbenutzen Images löschen

docker rmi $(docker image ls -q)
(Dieser Befehl versucht zwar alle Images zu löschen, kann aber Images, die aktuell in Benutzung sind nicht löschen 😅)