Kapitel 7 · 7.4
WordPress in Docker
Möchten Sie WordPress auf Ihrem VPS statt auf einem Hosting-Paket betreiben? Mit Docker stellen Sie WordPress und eine Datenbank nebeneinander, und Caddy kümmert sich um HTTPS.
Tipp: Bei einem Hosting-Paket übernimmt WebOké für Sie den Server, die PHP-Updates und die Backups. Wählen Sie den VPS, wenn Sie diese Freiheit wirklich benötigen.
Jedes Rezept baut auf dem Arbeitsverzeichnis /srv/diensten mit Caddy aus Ihr Arbeitsverzeichnis mit compose.yaml, .env und Caddy auf. Sie fügen einen Service zu compose.yaml hinzu, einen Block zum Caddyfile sowie einen A- und AAAA-Record für den Namen (siehe Ein A- und AAAA-Record in Meine Domains).
1. DNS
Lassen Sie example.com und www.example.com mit einem A- und AAAA-Record auf Ihren VPS zeigen. Läuft Ihre Website derzeit noch woanders, tun Sie dies erst, wenn die neue Website fertig ist.
2. Ein Datenbankpasswort in .env
anna@web1:/srv/diensten$ openssl rand -base64 24
Tragen Sie das Ergebnis in .env als WP_DB_WACHTWOORD=... ein.
3. compose.yaml
wordpress:
image: wordpress
restart: unless-stopped
environment:
WORDPRESS_DB_HOST: wp-db
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: ${WP_DB_WACHTWOORD}
WORDPRESS_DB_NAME: wordpress
volumes:
- wordpress:/var/www/html
depends_on:
- wp-db
wp-db:
image: mariadb:11.8
restart: unless-stopped
environment:
MARIADB_DATABASE: wordpress
MARIADB_USER: wordpress
MARIADB_PASSWORD: ${WP_DB_WACHTWOORD}
MARIADB_RANDOM_ROOT_PASSWORD: "1"
volumes:
- wp-db:/var/lib/mysql
Und unter volumes::
wordpress:
wp-db:
Die Datenbank erhält kein ports:: WordPress findet sie über den Namen wp-db (siehe Docker und die Firewall: Ports sicher veröffentlichen).
4. Caddyfile
example.com, www.example.com {
reverse_proxy wordpress:80
}
anna@web1:/srv/diensten$ sudo docker compose up -d
anna@web1:/srv/diensten$ sudo docker compose exec -w /etc/caddy caddy caddy reload
Öffnen Sie https://example.com und führen Sie die Installation von WordPress sofort durch. Das WordPress-Image erkennt, dass es hinter einem HTTPS-Proxy steht.
Aktualisieren
- WordPress, Plugins und Themes aktualisieren Sie wie gewohnt im WordPress-Dashboard. Sie liegen im Volume
wordpress. - PHP und der Webserver sind im Image enthalten. Diese aktualisieren Sie mit
docker compose pullundup -d(siehe Container aktualisieren, aufräumen und Logs begrenzen).
E-Mail und Backup
WordPress versendet E-Mails (Passwort vergessen, Formulare). Da Port 25 gesperrt ist, verwenden Sie ein SMTP-Plugin mit einem Postfach auf Port 587 (siehe Reverse DNS und E-Mail-Versand von Ihrem VPS). Für Ihr Backup benötigen Sie zwei Dinge: einen Dump der Datenbank und das Volume wordpress mit Ihren Uploads. Siehe Datenbanken und Docker-Volumes richtig sichern.
Mehr über WordPress selbst, etwa zu Plugins und Sicherheit, lesen Sie im WordPress-Kurs.
