_Swarm WordPress

Änderungsstand: 2021-09-03

WordPress, als Anwendung im Swarm Mode. Meine angelegte NFS-Freigabe für das Datenverzeichnis ist /mnt/data/… Im Gegensatz zur normalen Docker-Compose, kann Portainer bzw. der zu erstellende Service keine Verzeichnisse selbst anlegen. In diesem Fall lege ich die benötigten Verzeichnisse selbst an.

Nicht vergessen, die Pfade, am ersten Manager, anzulegen!

sudo mkdir -p /mnt/data/wordpress_data && sudo mkdir -p /mnt/data/wordpress_db

Als Stack:

  • Portainer öffnen
  • Stacks
  • + Add stack
    • Name: wordpress
    • Web editor: Folgenden Code eingeben:
version: "3.2"

services:
  wordpress-db:
    image: mariadb:latest
    restart: always
    environment:
      MYSQL_DATABASE: wordpress
      MYSQL_USER: wordpress
      MYSQL_PASSWORD: PASSWORT456
      MYSQL_ROOT_PASSWORD: PASSWORT123
    volumes:
      - /mnt/data/wordpress_db:/var/lib/mysql
    networks:
      - wp_network

  wordpress-app:
    image: wordpress
    restart: always
    ports:
      - 8089:80
    environment:
      WORDPRESS_DB_HOST: wordpress-db
      WORDPRESS_DB_USER: wordpress
      WORDPRESS_DB_PASSWORD: PASSWORT456
      WORDPRESS_DB_NAME: wordpress
      TAR_OPTIONS: --no-same-owner
    volumes:
      - /mnt/data/wordpress_data:/var/www/html
    networks:
      - wp_network

networks:
  wp_network:
    driver: overlay
    attachable: true

Actions: Deploy the stack

Das Erstellen dauert jetzt etwas. Auch wenn im Portainer schon angezeigt wird, dass WordPress und die Datenbank ausgerollt wurden, dauert es noch etwas, bevor man mit dem Browser darauf zugreifen kann!

Jetzt nicht im WordPress einloggen, wenn man den Zugang von Außen benötigt! Dafür muss erst der Nginx Proxy Manager eingerichtet werden! Weiter geht es unter “ WordPress von Außen erreichbar machen „

Ist WordPress für den internen Betrieb eingerichtet und man benötigt keinen Zugang von Außen, weil man nur Testen möchte, ist man hier fertig. Aufruf im Browser: Server-IP:8089

Die Fehlermeldung „Error establishing a database connection“ sagt aus, dass die Datenbank noch nicht komplett initialisiert wurde. Ein Kaffee regelt 🙂 .

Am Ende eine kleine Anpassung der wp-config.php, damit die Updates in WordPress funktionieren.

WordPress von Außen erreichbar machen:

Zuerst benötigt man im Idealfall mind. einen DynDNS-Dienst, welcher mit Subdomains umgenen kann. DuckDNS und DynDNSS, als Beispiele aufgezählt, können das. NoIP kann das in der kostenlosen Version NICHT! Anschließend benötigt man einen Reverse-Proxy. Ich verwende dafür „Nginx Proxy Manager“. Hier noch einmal die Guides dazu:

DynDNS (DuckDNS) | Nginx Proxy Manager

Info: Portweiterleitung des Routers zum Nginx Proxy Manager nicht vergessen. In meinem Beispiel ist das die Portweiterleitung zum ersten Manager-Node, egal, auf welchem Node sich am Ende NPM befindet. Der Cluster-Swarm-Manager regelt das.

Wurden beide Guides abgearbeitet, richte ich nun Nginx Proxy Manager ein. Dazu diesen im Browser starten. Dann in der „NginX Proxy Manager“ Weboberfläche:

Zuerst ein Passwortschutz für die WordPressseite. Dieser kann später, nach der Einrichtung, ohne Weiteres entfernt werden, wenn gewünscht.

  • „Access List“
    • „Add Access List“
    • Details:
      • Name: wordpress
      • Satisfy Any: ON
    • Authorization:
      • Username: Name
      • Password: Passwort
  • Save

Jetzt den Host (wordpress) einrichten:

  • „Host“
    • „Proxy Host“
      • „Add Proxy Host“
        • Details:
          • Domain Names: wordpress.clusterfarm.duckdns.org
            • (Eigene Domain verwenden)
          • Scheme: http
            • (8089 ist ein HTTP-Port)
          • Forward Hostname / IP: 192.168.1.131 (erster Manager-Node)
          • Forward Port: 8089
            • (8089 ist mein WordPress – Port)
          • Cache Assets: On
          • Websockets Support: On
          • Block Common Exploits: On
          • Access List: wordpress
        • SSL:
          • SSL Certificate: „Request a new SSL Certificate“
          • Force SSL: On
          • Http/2 Support: On
          • HSTS Enabled: On
          • Email Address for Lets‘ Encrypt: Eine gültige Email-Adresse
          • I Agree to the LE Terms of Service: On
  • Save

Nach ca. 10-20 Sekunden wurde das Zertifikat erstellt und der Dienst WordPress ist unter der angewendeten Domain, gesichert, von Außen erreichbar. Da ich einen extra Passwortschutz verwende, kann ich in Ruhe meine Seite(n) einrichten. Danach kann man entscheiden, ob der Passwortschutz bestehen bleiben soll oder nicht. Dazu im „Nginx Proxy Manager“ unter Hosts den Host editieren und unter „Details“ – „Access List“ von „wordpress“ auf „Publicly Accessible“ ändern. Save.

.

Quelle:

https://hub.docker.com/_/wordpress

Nun noch eine kleine Änderung an der wp-config.php, damit auch die Updates in WordPress funktionieren:

sudo nano /mnt/data/wordpress_data/wp-config.php

Folgendes am Ende der Datei hinzufügen:

define('FS_METHOD','direct');

Strg-x, y, Enter

Erstelle eine Website wie diese mit WordPress.com
Jetzt starten