_Swarm Nginx

Ä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)

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

https://docs.linuxserver.io/general/docker-compose

https://docs.linuxserver.io/images/docker-nginx

Erstelle eine Website wie diese mit WordPress.com
Jetzt starten