Héberger WordPress avec Docker Compose (prod) : SSL, backups, perf — guide 2026

Héberger WordPress avec Docker Compose (prod) : SSL, backups, perf — guide 2026

Guide actionnable pour héberger WordPress en production avec Docker Compose : HTTPS (reverse proxy), persistance (wp-content + DB), sauvegardes, sécurité et performance.

Héberger WordPress avec Docker Compose (prod) : SSL, backups, perf (guide 2026)

Installer WordPress avec Docker Compose, c’est simple. Le rendre robuste en production (HTTPS, persistance, sauvegardes, perf) est là où beaucoup se plantent : boucles de redirection, URLs en HTTP, uploads qui disparaissent, DB exposée…

Schéma : architecture WordPress en production avec Docker Compose (client, reverse proxy HTTPS, WordPress, base de données, Redis, sauvegardes)

Ce guide vous donne une base production-ready (à adapter à votre contexte), avec une architecture éprouvée : reverse proxy (HTTPS) → WordPress → base de données, plus backups et quelques garde-fous sécurité/perf.


TL;DR (ce que vous devez absolument avoir en prod)

  • HTTPS géré par un reverse proxy (Nginx/Traefik) + redirection 80→443
  • Volumes persistants :
    • wp-content/ (uploads, plugins, thèmes)
    • base de données (MySQL/MariaDB)
  • WordPress conscient du HTTPS derrière proxy (X-Forwarded-Proto + config WP)
  • Backups automatiques (et test de restauration)
  • Hardening (WAF/rate-limit, secrets, mises à jour)
  • Perf (cache, OPcache, images, CDN)

Architecture recommandée

Pourquoi un reverse proxy ?

  • Le conteneur wordpress ne “fait pas” TLS tout seul : on termine TLS au proxy.
  • On centralise les règles : redirections, headers, rate-limit, cache, ACME/Let’s Encrypt.

Prérequis

  • Un nom de domaine (ex: example.com) pointant vers votre serveur
  • Docker + Docker Compose
  • Ports 80/443 ouverts (et firewall propre)

Docker Compose (prod) — WordPress + MariaDB + reverse proxy

Deux approches qui marchent :

  1. Tout en Docker Compose (WordPress + DB + proxy)
  2. Proxy séparé (Traefik/Nginx partagé entre plusieurs apps)

Ici je vous donne un compose simple tout-en-un (facile à comprendre), puis les points à extraire si vous mutualises le proxy.

1) docker-compose.yml

Remplace example.com et mets des mots de passe forts (idéalement via secrets).

services:
  db:
    image: mariadb:11
    command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW
    environment:
      MARIADB_DATABASE: wordpress
      MARIADB_USER: wordpress
      MARIADB_PASSWORD: change_me
      MARIADB_ROOT_PASSWORD: change_me_root
    volumes:
      - db_data:/var/lib/mysql
    restart: unless-stopped

  wordpress:
    image: wordpress:php8.2-apache
    depends_on:
      - db
    environment:
      WORDPRESS_DB_HOST: db:3306
      WORDPRESS_DB_NAME: wordpress
      WORDPRESS_DB_USER: wordpress
      WORDPRESS_DB_PASSWORD: change_me
      # Optionnel : injecter une conf pour proxy HTTPS
      WORDPRESS_CONFIG_EXTRA: |
        if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && strpos($_SERVER['HTTP_X_FORWARDED_PROTO'], 'https') !== false) {
          $_SERVER['HTTPS'] = 'on';
        }
    volumes:
      - wp_data:/var/www/html
    restart: unless-stopped

  nginx:
    image: nginx:alpine
    depends_on:
      - wordpress
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./nginx/conf.d:/etc/nginx/conf.d:ro
      - ./nginx/certs:/etc/nginx/certs:ro
    restart: unless-stopped

volumes:
  db_data:
  wp_data:

2) nginx/conf.d/wordpress.conf

server {
  listen 80;
  server_name example.com www.example.com;
  return 301 https://$host$request_uri;
}

server {
  listen 443 ssl;
  server_name example.com www.example.com;

  ssl_certificate     /etc/nginx/certs/fullchain.pem;
  ssl_certificate_key /etc/nginx/certs/privkey.pem;

  client_max_body_size 100m;

  location / {
    proxy_pass http://wordpress:80;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
  }
}

Point critique : le couple X-Forwarded-Proto côté proxy + activation HTTPS côté WP évite les boucles de redirection et force WordPress à générer les URLs en HTTPS.


HTTPS : certificats (Let’s Encrypt)

En production, évite les certificats auto-signés. Utilise Let’s Encrypt (ACME).

Deux options :

  • Traefik (super pratique si vous héberges plusieurs apps)
  • Nginx + certbot

Si vous voulez rester en Nginx : mets en place certbot sur l’hôvous, ou un conteneur certbot qui renouvelle automatiquement, puis monte fullchain.pem/privkey.pem dans Nginx.


Backups : la règle 3-2-1 (et restauration testée)

vous devez sauvegarder deux choses :

  1. La DB (dump SQL régulier)
  2. Les fichiers (au minimum wp-content, idéalement tout le volume WordPress)

Checklist backup :

  • 1 backup/jour minimum (ou plus selon activité)
  • 1 copie hors serveur (S3, Backblaze, stockage dédié)
  • 1 test de restauration (sinon ce n’est pas un backup, c’est un pari)

Sécurité (prod) : 8 mesures simples qui évitent 80% des ennuis

  1. DB non exposée publiquement (pas de port 3306 sur 0.0.0.0)
  2. Mots de passe forts + rotation
  3. Limiter / protéger wp-login.php + /wp-admin (rate-limit, CAPTCHA, WAF)
  4. Désactiver XML-RPC si inutile
  5. Interdire l’exécution PHP dans wp-content/uploads
  6. Mettre à jour WordPress + plugins (et supprimer ceux inutiles)
  7. Ajouter des headers sécurité (HSTS, X-Frame-Options, etc.)
  8. Logs + alerting (au moins sur 401/403/5xx)

Performance : ce qui donne le meilleur ROI

  • Cache page (plugin + règles proxy)
  • Object cache (Redis si besoin)
  • OPcache (souvent activé, à vérifier)
  • Images : WebP/AVIF, lazy-load, compression
  • CDN pour les assets
  • Base de données : index, nettoyage, éviter plugins “lourds”

Vidéo (FR) — WordPress avec Docker


Déployer WordPress en 1 clic sur adgents.cloud

Si vous voulez éviter de maintenir l’infra (TLS, backups, scaling…), vous pouvez déployer WordPress sur adgents.cloud :

  • Installation / déploiement en 1 clic
  • Facturation à l’heure
  • Stop/Start (compute non facturé à l’arrêt)
  • Backups automatiques (24h par défaut, jusqu’à 1/h)
  • Rétention longue (jusqu’à 10 ans)
  • Scaling CPU/RAM à la demande

\1Découvrir l’application sur Adgents.cloud

Lancez-vous avec WordPress.

Envie de vous lancer avec WordPress ? Créez votre site web en quelques clics.

WordPress

WordPress

Le CMS le plus populaire au monde

Déployer WordPress

Essayer gratuitement : crée votre instance WordPress et teste le workflow (déploiement + backups + restore).

Aller plus loin


Essayer sur Adgents.cloud

Envie d’un déploiement propre sans passer des heures sur l’infra ? Sur Adgents.cloud, vous pouvez :

  • déployer en 1 clic
  • être facturé à l’heure
  • utiliser stop/start (compute non facturé à l’arrêt)
  • activer des backups automatiques (24h par défaut, jusqu’à 1/h)
  • garder une rétention longue (jusqu’à 10 ans)
  • ajuster le scaling CPU/RAM à la demande

Découvrir wordpress sur Adgents.cloudEssayer gratuitement

Cloud pattern

Cet article vous a été utile ?

N'hésitez pas à découvrir d'autres articles

Voir plus d'articles