Swarm Nginx

Ä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

https://blog.unixweb.de/docker-volumes-mit-nfs-nutzen/

Erstelle eine Website wie diese mit WordPress.com
Jetzt starten