Installer Drupal avec Docker Compose (prod) : HTTPS, base de données, volumes

Installer Drupal avec Docker Compose (prod) : HTTPS, base de données, volumes

Guide 2026 pour installer Drupal avec Docker Compose en production : reverse proxy HTTPS, base de données persistante, volumes, sauvegardes testées et bonnes pratiques sécurité/performance.

Installer Drupal avec Docker Compose (prod) : HTTPS, base de données, volumes

Installer Drupal en production ne se résume pas à lancer un conteneur : il faut gérer HTTPS, une base de données persistante, des volumes pour les fichiers, et une stratégie de sauvegarde réaliste.

Schéma de stack Drupal : Nginx/PHP-FPM, base de données, volumes persistants et HTTPS

Dans ce guide, on part d’un docker-compose simple et on l’amène vers une mise en service propre. Si vous cherchez une voie rapide pour héberger Drupal sans gérer l’infrastructure au quotidien, vous pouvez aussi passer par adgents.cloud (application Drupal) : déploiement en 1 clic, scaling CPU/RAM, et sauvegardes automatiques.

Schéma d’architecture Drupal en conteneurs (HTTPS + DB + volumes)

Pourquoi Docker Compose pour Drupal en production ?

Docker Compose apporte un cadre reproductible (et donc documentable) pour :

  • isoler Drupal et la base de données
  • persister les fichiers et la DB via des volumes
  • standardiser le reverse proxy HTTPS
  • préparer une approche de sauvegarde et de restauration

Si vous venez de publier un site WordPress et que vous aimez cette approche, l’article Héberger WordPress avec Docker Compose (prod) vous donnera des repères proches côté HTTPS et volumes.

Prérequis

  • Un VPS Linux (Debian/Ubuntu)
  • Un nom de domaine pointant sur le serveur (enregistrements DNS)
  • Docker + Docker Compose installés

Pour un hébergement managé orienté “app”, vous pouvez comparer avec adgents.cloud : vous gardez le contrôle (start/stop, scaling), tout en évitant une partie de l’opérationnel.

1) Arborescence recommandée

Créez un dossier de projet clair :

mkdir -p drupal-prod/{traefik,db,drupal} && cd drupal-prod
  • drupal/ : code + fichiers persistants
  • db/ : données DB (volume)
  • traefik/ : reverse proxy + certificats

2) Exemple docker-compose.yml (Drupal + PostgreSQL + Traefik HTTPS)

Cet exemple vise la production :

  • PostgreSQL (souvent un bon choix pour Drupal)
  • Traefik pour gérer HTTPS (Let’s Encrypt)
  • volumes dédiés

Si vous préférez Nginx + Certbot, vous pouvez suivre la logique du tutoriel DigitalOcean “How To Install Drupal with Docker Compose” et appliquer les mêmes principes (reverse proxy, volumes, renouvellement certificats).

Créez docker-compose.yml :

services:
  traefik:
    image: traefik:v3.2
    command:
      - --api.dashboard=false
      - --providers.docker=true
      - --providers.docker.exposedbydefault=false
      - --entrypoints.web.address=:80
      - --entrypoints.websecure.address=:443
      - [email protected]
      - --certificatesresolvers.le.acme.storage=/letsencrypt/acme.json
      - --certificatesresolvers.le.acme.httpchallenge=true
      - --certificatesresolvers.le.acme.httpchallenge.entrypoint=web
    ports:
      - 80:80
      - 443:443
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock:ro
      - traefik_letsencrypt:/letsencrypt
    restart: unless-stopped

  db:
    image: postgres:16
    environment:
      POSTGRES_DB: drupal
      POSTGRES_USER: drupal
      POSTGRES_PASSWORD: change-me
    volumes:
      - db_data:/var/lib/postgresql/data
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U drupal -d drupal"]
      interval: 10s
      timeout: 5s
      retries: 10
    restart: unless-stopped

  drupal:
    image: drupal:10-php8.3-fpm
    depends_on:
      db:
        condition: service_healthy
    volumes:
      - drupal_files:/opt/drupal/web/sites/default/files
    environment:
      DRUPAL_DB_HOST: db
      DRUPAL_DB_NAME: drupal
      DRUPAL_DB_USER: drupal
      DRUPAL_DB_PASSWORD: change-me
    labels:
      - traefik.enable=true
      - traefik.http.routers.drupal.rule=Host(`drupal.exemple.fr`)
      - traefik.http.routers.drupal.entrypoints=websecure
      - traefik.http.routers.drupal.tls.certresolver=le
      - traefik.http.services.drupal.loadbalancer.server.port=9000
    restart: unless-stopped

volumes:
  db_data: {}
  drupal_files: {}
  traefik_letsencrypt: {}

Puis :

docker compose up -d

Drupal doit alors être accessible sur votre domaine.

3) Volumes : ce qu’il faut absolument persister

Pour Drupal, deux zones sont critiques :

  • La base de données (contenu, configuration)
  • Les fichiers (sites/default/files) : images, documents, etc.

C’est aussi la raison pour laquelle une plateforme “app” comme adgents.cloud est intéressante : elle simplifie la persistance et la sauvegarde, tout en gardant la logique conteneur.

4) Drupal derrière reverse proxy : points à vérifier

Quand HTTPS est terminé au niveau du reverse proxy, Drupal doit recevoir des en-têvos corrects pour :

  • générer les URLs en HTTPS
  • journaliser la bonne IP client
  • éviter des comportements étranges sur les redirections

Dans settings.php, Drupal propose des réglages dédiés aux reverse proxies (activation + liste des proxies de confiance + en-têvos). Une base utile est de partir des réglages “reverse proxy” présents dans le fichier par défaut, puis d’ajuster :

  • activation du mode reverse proxy
  • liste d’adresses des proxies
  • en-têvos utilisés (X-Forwarded-For, X-Forwarded-Proto, etc.)

Si vous voulez aller plus loin sur les environnements multi-proxy, regardez le module “Trusted Reverse Proxy” (principe : ne faire confiance qu’aux proxys amont que vous maîtrisez).

5) Sauvegardes : la règle d’or = restaurer pour de vrai

Une sauvegarde n’a de valeur que si :

  • elle est automatisée
  • elle a une rétention cohérente
  • vous avez déjà fait au moins un test de restauration (sur un environnement isolé)

Sur adgents.cloud, vous pouvez activer des sauvegardes automatiques (jusqu’à 1/h selon l’offre) et une rétention longue, ce qui facilite le PRA sans bricolage.

6) Sécurité et performance (essentiels)

Quelques incontournables :

  • Mises à jour : planifier un créneau régulier et automatiser la surveillance
  • Permissions fichiers : éviter d’exposer des écritures inutiles
  • Cache : Drupal aime les caches ; ajoutez Redis si le trafic monte
  • Observabilité : logs applicatifs + métriques (au minimum)

Pour d’autres guides “prod” autour de l’hébergement d’applications, vous pouvez aussi parcourir nos articles et, si vous utilisez des automatisations, l’article n8n en production : bonnes pratiques donne une méthode utile (séparation des composants, persistance, sécurité).

Lancez-vous avec Drupal.

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

Drupal

Drupal

La solution pour projets complexes

Déployer Drupal

Tutoriel vidéo (FR) pour maîtriser Docker Compose

Si vous voulez consolider les bases Docker Compose avant d’industrialiser Drupal :

  • Cloud background

Conclusion

Avec Docker Compose, vous pouvez mettre Drupal en production de façon propre : HTTPS, DB persistante, volumes pour les médias, et une stratégie de sauvegarde réaliste.

Si vous voulez gagner du temps sur l’opérationnel (déploiement, scaling, sauvegardes), testez adgents.cloud ou directement l’application Drupal sur adgents.cloud.

Cloud pattern

Cet article vous a été utile ?

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

Voir plus d'articles