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.
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.

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 persistantsdb/: 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
La solution pour projets complexes
Tutoriel vidéo (FR) pour maîtriser Docker Compose
Si vous voulez consolider les bases Docker Compose avant d’industrialiser Drupal :
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.


