WordPress in Docker inkl. HTTPS Let's Encrypt-Setup
Die zurzeit wohl am weitesten verbreitete Blogging-Software WordPress kann unter anderem einfach und kostengünstig in Docker-Containern betrieben werden. Als Server bietet sich dafür ein virtueller Server oder Cloud-Server eines bekannten Hosting-Providers an, siehe auch: Providerwechsel HostEurope vs Hetzner, vServer vs Cloud-Server. Wer den Betrieb eines eigenen Webservers nicht scheut, kann mit dem hier vorgestellten Setup darauf eine oder mehrere WordPress-Seiten inklusive kostenlosem https-Zertifikat betreiben. Die Kosten eines virtuellen Servers starten ab 4 € pro Monat, was für den Betrieb einer einzelnen Website bereits relativ günstig ist.
Profil:
Software | WordPress |
---|---|
Hersteller | https://wordpress.org |
aktuelle Version | 6.5 |
(gefunden: 03.04.2024) |
Docker Basics
Docker ermöglicht es, Services oder Applikationen per Befehl in einem sogenannten Container zu starten.Ein Container ist eine vom Betriebssystem (OS) unabhängige isolierte Umgebung:
Beim ersten Start eines Containers, lädt Docker selbstständig alle notwendigen Quellen
aus dem Internet.
Docker kann unter Windows, macOS oder einer Linux-Distribution installiert werden,
siehe auch: Docker
Damit WordPress sicher vom Internet erreicht werden kann, setze ich Traefik als Let's Encrypt Reverse-Proxy ein. Der Reverse-Proxy stellt eine verschlüsselte HTTPS-Verbindung zur Verfügung und ermöglicht es mehrere Websites auf einem Server zu betreiben.
Alternativ zu einem Reverse-Proxy kann auch ein Cloudflare-Tunnel für das Veröffentlichen von Webservices aus dem eigenen Netzwerk verwendet werden:
Schritt fĂĽr Schritt WordPress in Docker inklusive Zugriff vom Internet
Hardwareanforderung:- Für die Docker-Installation kann eine nahezu beliebige Hardware verwendet werden. Zum Beispiel ein virtueller Server eines Providers, oder für zu Hause: ein Mini-PC, Notebook, MAC, ein NAS: QNAP, Synology oder eine andere Hardware mit x68-64 Architektur auf der sich Windows oder Linux installieren lässt.
- Eigene registrierte Domain, siehe Domain und dessen Verwaltung.
- Cloudflare oder Reverse Proxy:
- Cloudflare-Tunnel Service oder alternativ:
- Port-Forwarding und Reverse Proxy mit Let's Encrypt-Zertifikat
- docker-compose.yml anlegen und anpassen
- Container starten undÂ
- Einrichten
WordPress Docker Compose
Um WordPress mittels docker compose zu starten, kann das offizielle Docker WordPress-Image und als Datenbank MySQL verwendet werden. Beide Images können mit einer simplen docker-compose.yml Datei heruntergeladen, erstellt und gestartet werden. Die Datei kann mit einem beliebigen Texteditor wie folgt befüllt und dann angepasst werden:
Dateiname: docker-compose.yml, Inhalt:
services:
wordpress:
image: wordpress
restart: always
expose:
- 80
#FĂĽr einen direkten Test-Zugriff, in den folgenden 2 Zeilen "#" entfernen. Aufruf: http://localhost:83 oder http://ServerIP:83
#ports:
#- "83:80"
environment:
WORDPRESS_DB_HOST: wordpress_db
WORDPRESS_DB_USER: exampleuser
WORDPRESS_DB_PASSWORD: examplepass
WORDPRESS_DB_NAME: exampledb
#Labels fĂĽr ReverseProxy, siehe: https://www.libe.net/traefik
labels:
- "traefik.enable=true"
- "traefik.http.routers.wordpress.rule=Host(`wp.domain.tld`)"
- "traefik.http.routers.wordpress.entrypoints=web"
- "traefik.http.routers.wordpress.entrypoints=websecure"
- "traefik.http.routers.wordpress.tls.certresolver=myresolver"
- "traefik.http.services.wordpress.loadbalancer.server.port=80"
volumes:
- wordpress:/var/www/html
wordpress_db:
image: mysql:5.7
restart: always
environment:
MYSQL_DATABASE: exampledb
MYSQL_USER: exampleuser
MYSQL_PASSWORD: examplepass
MYSQL_RANDOM_ROOT_PASSWORD: '1'
volumes:
- wordpress-db:/var/lib/mysql
volumes:
wordpress:
wordpress-db:
#Ohne dem Einsatz eines Reverse Proxy (https://www.libe.net/traefik) fehlt voraussichtlich das Netzwerk webproxy
#und die folgenden Zeilen können entfernt oder auskommentiert werden. Alternativ kann das Netzwerk mit "docker network create webproxy" erstellt werden
networks:
default:
name: webproxy
external: true
Für einen direkten Zugriff über die IP-Adresse oder localhost - auch ohne Reverse Proxy, DNS oder öffentlicher IP - kann die auskommentierte Port-Einstellung für Testzwecke aktiviert werden, indem „#“ vor „ports“ und „-"83:80"“ entfernt wird.
Damit der Internetzugriff über den Traefik Reverse Proxy funktioniert, muss in den Labels die Domäne mit den zuvor erstellten DNS-Einträgen ersetzt werden (im Beispiel: wp.domain.tld). Das Beispiel verwendet Docker Volumes und keine Bind-Mounts für das permanente Speichern der Daten. Siehe: Docker Daten speichern: Docker Volumes vs. Host-Ordner
Container starten
Der Start erfolgt aus dem Ordner der docker-compose.yml-Datei mit dem Befehl„"docker compose up“:
docker compose up -d
Inbetriebnahme / erster Aufruf der Weboberfläche
Beim Aufruf der angegebenen Domain (https://wp.domain.tld) meldet sich das WordPress-Setup. FĂĽr einen Testbetrieb auf dem eigenen Rechner und dem Aktivieren von Port 83 kann der Aufruf zudem direkt ohne Internet ĂĽber die URLs http://localhost:83 oder http://ServerIP:83 erfolgen.
https://wp.domain.tld/wp-admin/ :
Docker-Logs anzeigen
Sollte an dem Setup etwas nicht funktionieren, lohnt sich ev. ein Blick in die Logdateien des Web-Containers:
docker logs wordpress_wordpress_1 -f
Docker Admin-Oberfläche
Für ein einfaches Verwalten der Docker Container über eine Weboberfläche, siehe auch: Docker Admin-Oberfläche: Portainer Community Edition
{{percentage}} % positiv