Tous les services opérationnels Devise EUR Aucun frais de mise en service Vous êtes à La Réunion ?
‹ Serveurs VPS et Docker

WordPress avec Docker Compose, pas à pas

WordPress s'installe avec Docker en deux conteneurs décrits dans un fichier compose : l'image officielle wordpress, qui embarque PHP et Apache, et une base MySQL. Les fichiers du site et la base vivent dans deux volumes, si bien qu'une mise à jour de l'image ne touche pas au contenu. Devant eux, un reverse proxy comme Caddy ou Traefik sert le site en HTTPS sur votre nom de domaine.

Par Jonathan Dewaele · publié le

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

Installer WordPress

  1. Créez un dossier et placez-vous dedans : mkdir ~/wordpress && cd ~/wordpress
  2. Créez un fichier .env avec deux mots de passe longs et différents, et réservez-le à votre compte avec chmod 600 .env :
WORDPRESS_DB_PASSWORD=un-mot-de-passe-long-et-unique
MYSQL_ROOT_PASSWORD=un-autre-mot-de-passe-long
  1. 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
  1. Lancez l'ensemble : docker compose up -d, puis vérifiez avec docker compose ps.
  2. Déclarez le site dans votre reverse proxy. Avec Caddy, un bloc dans le Caddyfile suivi d'un rechargement :
www.votre-domaine.fr {
	reverse_proxy wordpress:80
}
  1. Ouvrez https://www.votre-domaine.fr et 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 :

  1. Exportez d'abord la base, comme dans Sauvegarder ses conteneurs Docker.
  2. Changez l'étiquette dans compose.yaml si vous changez de version de PHP, par exemple vers une variante php8.4 listée sur la page de l'image.
  3. Lancez docker compose pull, puis docker 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