Files
docknpr/swarm_full/README.md

3.2 KiB

Konfiguration

Vorhandene Konfigurationen anpassen

Es ist sinnvoll, Konfigurationen anzupassen. Die in die Services eingebundenen Dateien können von den jeweiligen Repositories geladen werden, oder über das Starten der Container mit einem Docker-Volume manuell kopiert werden. Wir empfehlen das Laden der Konfigurationsdateien aus den Git-Repositories. Diese finden Sie hier:

Wenn Sie keine Konfigurationen anpassen möchten, können Sie auf alle Bind-Volumes verzichten, außer /docker/mnt/stack0/web1/src:/usr/share/nginx/html. Beachten Sie, hier ebenfalls den Pfad des Hosts auf Ihre Umgebung anzupassen.

Zudem muss einer der PHP-Services (php84 oder php83) in php umbenannt werden.

Alternativ muss die Konfigurations-Datei /docker/mnt/stack0/web1/server/etc/nginx/conf.d/default.conf:/etc/nginx/conf.d/default.conf eingebunden und angepasst werden. Ändern Sie hier dafür die Zeile fastcgi_pass php:9000; in fastcgi_pass php84:9000; oder fastcgi_pass php83:9000;.

Aus Sicherheitsgründen empfehlen wir, das in der Konfiguration gesetzte Kennwort für Redis ebenfalls zu ändern.

Network

  • Das Netzwerk ist typisch für die Swarm-Konfiguration auf overlay eingestellt.
  • Hier ist eine statische IP-Konfiguration festgelegt. Dieses muss eventuell angepasst werden, wenn Container zu einem bestehenden Netzwerk hinzugefügt werden sollen. (z.B. Traefik)

Ports

In diesem Beispiel sind zwei Ports zum Host veröffentlicht. 8080 für nginx und 6379 für Redis.

Volumes

  • Hier verwenden wir einen Bind, um bestimmte Konfigurationen in den Container einzubinden.
  • Möglicherweise müssen Sie bei der Verwendung mehrerer Stacks den Stack-Namen web1 durch einen anderen Namen ersetzen.
  • Achten Sie beim Deployment in einem Swarm darauf keine Volumes zu verwenden, da diese nicht Node-Übergreifend sind. In diesem Beispiel wird davon ausgegangen, das der Pfad stack0 über Mounts wie z.B. glusterfs in alle Nodes eingebunden ist und allen Nodes zur Verfügung steht.

Traefik-Labels

  • Hier müssen Sie den Router- und Service-Namen für Ihre Bedürfnisse anpassen und den Stack-Namen web1 durch einen anderen Namen ersetzen.
  • Zudem ist der Host-Parameter gemäß Ihrer Domäne zu ersetzen Host(`web1.localdomain`).

Deployment

Replicas

  • Die Anzahl der Replicas steht hier standardmäßig auf 1, außer beim Webservice, wo es 3 Replicas sind. Passen Sie dies je nach Bedarf an. Beachten Sie, den Service Redis nicht >1 zu stellen, da ansonsten die Sessions innerhalb von PHP nicht mehr konsistent sind!

Update-Config

  • Die Update-Config steht auf 1 mit einem delay von 10s. Bei einem Update des Services werden also alle 3 Container im Abstand von 10 Sekunden aktualisiert und somit gibt es keine Downtime bei der Aktualisierung.

Restart-Policy

  • Die Restart-Policy ist auf on-failure gesetzt, damit der Container nur bei Fehlern neu startet.

Placement

  • Das Placement ist so eingestellt, das die Dienste nur auf Worker-Nodes (node.role != manager) und nicht auf Manager-Nodes bereitgestellt werden.