Änderungsstand: 2022-10-27
Jetzt füge ich einen Nginx Webserver meinem Swarm hinzu. In diesem Beispiel verwende ich dafür Portainer. 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 zeige 2 Beispiele, wie man mit dem Portainer Dienste anlegt. Einmal als Stack und einmal als Service. Obwohl es auf dem ersten Blick keinen Sinn ergibt, eine einzige Anwendung als Stack zu erstellen, werde ich diese Möglichkeit verwenden. 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.
Nicht vergessen, den Pfad anzulegen!
sudo mkdir -p /mnt/data/nginx
Einrichtung als Stack:
Ich verwende für meinen internen Webservice Port 3200 und rolle diesen Global, auf allen Nodes, aus.
- Portainer öffnen
- Stacks
- + Add stack
- Name: webserver
- Web editor: Folgenden Code eingeben:
version: "3.2"
services:
nginx:
image: lscr.io/linuxserver/nginx
environment:
- PUID=1000
- PGID=1000
- TZ=Europe/Berlin
volumes:
- /mnt/data/nginx:/config
ports:
- 3200:80
deploy:
mode: global
restart_policy:
condition: any
networks:
- web_network
networks:
web_network:
driver: overlay
attachable: true
Actions: Deploy the stack
Der Stack webserver wird erstellt und Nginx wird als Service im Swarm installiert. Da ich diesen Service Global ausrolle, wird er auch auf allen verfügbaren Nodes installiert.
Einrichtung als Service:
Wer die Installation als Stack erledigt hat, benötigt das nicht mehr.
- Portainer öffnen
- „Services“ wählen
- +Add service
- Name: Webserver
- Image: ghcr.io/linuxserver/nginx
- Scheduling mode: global
- Port mapping: + map additional port
- host: 3200 –> container: 80 (host-Port nach eigenen Wünschen anpassen)
- „Volumes“ (steht etwas weiter unten)
- +map additional volumes
- container: /config
- dahinter anschließend „Bind“ anklicken
- host: /mnt/data/nginx (das ist mein NFS-Freigabeverzeichnis)
- Read-only anklicken
- „Update config & Restart“
- Restart condition: Any
- Actions: „Create the service“ anklicken (steht leicht oberhalb)
- +Add service
Der Service webserver wird erstellt und Nginx wird im Swarm installiert. Da ich diesen Service Global ausrolle, dauert das etwas, bevor dieser verfügbar ist, da der Docker auf allen Nodes erstellt wird.
- www-Verzeichnis für eigene Websites: /mnt/data/nginx/www
- Nginx-config-Verzeichnis: /mnt/data/nginx/nginx/nginx.conf
- Site-config: /mnt/data/nginx/nginx/site.confs
Aufruf im Browser: 192.168.1.141:3200

Quelle(n):
https://hub.docker.com/r/linuxserver/nginx