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:
- https://git.send.nrw/sendnrw/nginx
- https://git.send.nrw/sendnrw/php84
- https://git.send.nrw/sendnrw/php83
- https://git.send.nrw/sendnrw/redis
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 es3
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 von10s
. 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.