Chapter 7 · 7.4
WordPress in Docker
This article hasn't been translated yet. You're reading the Dutch version.
Wil je WordPress op je VPS draaien in plaats van op een hostingpakket? Met Docker zet je WordPress en een database naast elkaar, en Caddy regelt https.
Tip: Op een hostingpakket regelt WebOké de server, de updates van PHP en de back-ups voor je. Kies voor de VPS als je die vrijheid echt nodig hebt.
Elk recept bouwt voort op de werkmap /srv/diensten met Caddy uit Je werkmap met compose.yaml, .env en Caddy. Je voegt een service toe aan compose.yaml, een blok aan het Caddyfile, en een A- en AAAA-record voor de naam (zie Een A- en AAAA-record in Mijn Domeinen).
1. DNS
Laat example.com en www.example.com met een A- en AAAA-record naar je VPS wijzen. Draait je site nu nog ergens anders, doe dit dan pas als de nieuwe site klaar is.
2. Een databasewachtwoord in .env
anna@web1:/srv/diensten$ openssl rand -base64 24
Zet de uitkomst in .env als WP_DB_WACHTWOORD=....
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
En onder volumes::
wordpress:
wp-db:
De database krijgt geen ports:: WordPress vindt hem op de naam wp-db (zie Docker en de firewall: poorten veilig publiceren).
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
Open https://example.com en doorloop de installatie van WordPress meteen. Het WordPress-image herkent dat het achter een https-proxy staat.
Bijwerken
- WordPress, plugins en thema's werk je bij in het dashboard van WordPress, zoals altijd. Ze staan in het volume
wordpress. - PHP en de webserver zitten in het image. Die werk je bij met
docker compose pullenup -d(zie Containers bijwerken, opruimen en logs beperken).
Mail en back-up
WordPress verstuurt mail (wachtwoord vergeten, formulieren). Omdat poort 25 dicht staat, gebruik je een SMTP-plugin met een mailbox op poort 587 (zie Reverse DNS en mail versturen vanaf je VPS). Voor je back-up heb je twee dingen nodig: een dump van de database en het volume wordpress met je uploads. Zie Databases en Docker-volumes goed meenemen.
Meer over WordPress zelf, zoals plugins en beveiliging, lees je in de WordPress-cursus.
