Änderungsstand: 2023-03-18
Jetzt füge ich einen Nginx Webserver meinem Swarm hinzu. In diesem Beispiel verwende ich dafür Portainer. Zuerst lege ich mir das Konfigurationsverzeichnis auf dem ersten Manager Node an. Im Gegensatz zur normalen Docker-Compose kann Portainer bzw. der zu erstellende Service keine Verzeichnisse selbst anlegen. In diesem Beispiel lege ich die Sachen von Hand an. Ich verwende jetzt nicht das Standard-Nginx sondern das Nginx von /linuxserver. Ich lege diesen Service als Stack an. Das macht es für mich einfacher, obwohl es auf dem ersten Blick keinen Sinn ergibt, eine einzige Anwendung als Stack zu erstellen. Ein erstellter Stack, auch wenn nur eine Anwendung verwendet wird, erstellt einen dazugehörigen Service. Die Erstellung geht sehr viel schneller und ich kann von meinen Stacks ein fertiges Template erstellen. Doch dazu wird es einen eigenen Guide geben.
Ich verwende eine NFS-Freigabe als Datenpfad. Diese Freigabe habe ich an allen Nodes unter /mnt/appdata eingebunden. Der Pfad des NFS-Servers für diese Testreihe lautet: 192.168.1.39:/mnt/user/nfspath/appdata/.
Nicht vergessen, den Pfad am ersten Manager-Node anzulegen! Bei mir wäre das:
mkdir -p /mnt/appdata/nginx
Einrichtung als Stack:
Ich verwende für meinen internen Webservice Port 3200 und rolle diesen Service auf allen Nodes aus.
- Portainer öffnen
- Stacks
- + Add stack
- Name: webserver
- Web editor: Folgenden Code eingeben:
version: "3.5"
services:
nginx:
image: lscr.io/linuxserver/nginx
environment:
- PUID=1000
- PGID=1000
- TZ=Europe/Berlin
deploy:
mode: global
restart_policy:
condition: on-failure
ports:
- 3200:80
networks:
- nginx-net
volumes:
- nginx-data:/config
volumes:
nginx-data:
driver: local
driver_opts:
type: "nfs"
o: "nfsvers=4,addr=192.168.1.39,rw"
device: ":/mnt/user/nfspath/appdata/nginx"
networks:
nginx-net:
driver: overlay
attachable: true
Actions: Deploy the stack
Der Stack webserver wird erstellt und Nginx wird als Service im Swarm installiert. Dieser Service wird auf allen Nodes ausgerollt.
Aufruf im Browser: Server-IP des ersten Manager-Node:3200

.
Es wurden auch Daten geschrieben. Diese sehe ich nun direkt am NFS-Server, an den einzelnen Nodes oder im Portainer.
.
.
Quelle(n):
https://hub.docker.com/r/linuxserver/nginx
https://docs.linuxserver.io/general/docker-compose
https://docs.linuxserver.io/images/docker-nginx
https://www.medic-daniel.de/linux/2021/06/docker-persistent-volumes-via-nfs