Ce guide suit la page de l'image officielle WordPress, relue le 14 octobre 2026 : l'étiquette latest y désigne WordPress 7.1.3 avec PHP 8.3 et Apache. Le fichier ci-dessous reprend son exemple, avec des étiquettes fixées et les mots de passe sortis dans un fichier à part.
Avant de commencer
- Docker Engine et son extension Compose ; voir Installer Docker si besoin.
- Un nom de domaine qui pointe vers le serveur ; voir Pointer un nom de domaine vers son VPS.
- Un reverse proxy en place, sur un réseau Docker nommé
proxy: Caddy ou Traefik.
Installer WordPress
- Créez un dossier et placez-vous dedans :
mkdir ~/wordpress && cd ~/wordpress - Créez un fichier
.envavec deux mots de passe longs et différents, et réservez-le à votre compte avecchmod 600 .env:
WORDPRESS_DB_PASSWORD=un-mot-de-passe-long-et-unique
MYSQL_ROOT_PASSWORD=un-autre-mot-de-passe-long
- Créez le fichier
compose.yaml:
services:
wordpress:
image: wordpress:7.1-php8.3-apache
restart: always
environment:
WORDPRESS_DB_HOST: db
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: ${WORDPRESS_DB_PASSWORD}
WORDPRESS_DB_NAME: wordpress
volumes:
- wordpress:/var/www/html
networks:
- default
- proxy
db:
image: mysql:8.0
restart: always
environment:
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: ${WORDPRESS_DB_PASSWORD}
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
volumes:
- db:/var/lib/mysql
volumes:
wordpress:
db:
networks:
proxy:
external: true
- Lancez l'ensemble :
docker compose up -d, puis vérifiez avecdocker compose ps. - Déclarez le site dans votre reverse proxy. Avec Caddy, un bloc dans le
Caddyfilesuivi d'un rechargement :
www.votre-domaine.fr {
reverse_proxy wordpress:80
}
- Ouvrez
https://www.votre-domaine.fret suivez l'installation de WordPress : langue, titre du site, compte administrateur.
Aucun port n'est publié : WordPress n'est joignable que par le proxy, et la base seulement par WordPress. L'exemple officiel publie le port 8080 pour un essai local ; sur un serveur, passer par le proxy évite d'exposer un site sans HTTPS.
Le HTTPS derrière le proxy
Le proxy reçoit le HTTPS et parle à WordPress en HTTP. Le fichier de configuration de l'image officielle lit l'en-tête X-Forwarded-Proto envoyé par le proxy et en déduit que la page a été demandée en HTTPS, d'après son code source. Caddy et Traefik posent cet en-tête sans réglage. Si le site tourne en boucle de redirections, voir Trop de redirections sur WordPress.
Mettre à jour
WordPress se met à jour depuis son administration, extensions et thèmes compris : ces fichiers vivent dans le volume wordpress. L'image, qui porte PHP et Apache, se met à jour à part :
- Exportez d'abord la base, comme dans Sauvegarder ses conteneurs Docker.
- Changez l'étiquette dans
compose.yamlsi vous changez de version de PHP, par exemple vers une variantephp8.4listée sur la page de l'image. - Lancez
docker compose pull, puisdocker compose up -d.
Gardez mysql:8.0 tant que vous n'avez pas lu les notes de version de MySQL : passer à une version majeure suivante se prépare, avec un export préalable. La méthode générale est dans Mettre à jour un conteneur Docker.
Les e-mails de WordPress
Les messages de WordPress, réinitialisation de mot de passe ou formulaires, ont besoin d'un serveur d'envoi. Installez une extension SMTP et réglez-la sur la messagerie de votre domaine ou sur un service d'envoi, port 587 en STARTTLS. Le principe est le même que dans Les e-mails des formulaires n'arrivent pas. Inutile de régler un reverse DNS pour cela : c'est le serveur d'envoi qui en porte un.
Sur un VPS Hubspace
Docker et Compose sont installés à la livraison, utilisables par le compte admin sans sudo. Le pare-feu réseau ouvre 80 et 443 au reverse proxy et garde fermés les autres ports. Les ports 25 et 465 sortants sont bloqués, le 587 reste ouvert : c'est celui à régler dans l'extension SMTP. Les volumes vivent sur le disque principal, sauvegardé chaque jour et gardé sept jours.
Un VPS n'est pas managé : les mises à jour de WordPress, de ses extensions et de l'image restent à votre charge. Si vous préférez ne pas vous en occuper, un hébergement WordPress managé fait ce travail ; la différence est expliquée dans Hébergement managé ou non.
Questions fréquentes
Pourquoi deux mots de passe dans le fichier .env ?
L'un sert à WordPress pour se connecter à sa base, l'autre est celui du compte administrateur de MySQL. Les séparer limite les dégâts si l'un fuit. Le fichier .env reste sur le serveur et ne s'envoie jamais dans un dépôt Git.
Comment installer un thème ou une extension ?
Depuis l'administration de WordPress, comme sur n'importe quel hébergement : les fichiers arrivent dans le volume wordpress, dans wp-content. Voir Installer une extension WordPress.
Où lire les erreurs de WordPress ?
Dans le dossier du projet, docker compose logs -f wordpress affiche les journaux d'Apache et de PHP du conteneur, docker compose logs -f db ceux de MySQL. Une page blanche ou une erreur 500 s'y explique le plus souvent.
Articles liés
- Installer Docker sur Ubuntu ou Debian, pas à pasInstaller Docker Engine et Docker Compose sur Ubuntu 24.04, 26.04 ou Debian 13 depuis le dépôt officiel, l'utiliser sans sudo et vérifier que tout fonctionne.
- Docker Compose : décrire et lancer vos conteneursDocker Compose expliqué : écrire un fichier compose.yaml, lancer et arrêter vos services, lire les journaux et mettre à jour une application sur un serveur.
- Commandes Docker : les essentielles à connaîtreLes commandes Docker essentielles : lister les conteneurs, lire leurs journaux, entrer dans un conteneur, gérer les images et libérer de la place sans risque.