Ä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
- Domain Names: wordpress.clusterfarm.duckdns.org
- 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
- Details:
- „Add Proxy Host“
- „Proxy Host“
- 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