Monter un environnement Drupal 11 en local avec DDEV

Installer PHP, Composer, un serveur web et une base de données directement sur son poste, c'est la garantie de passer plus de temps à configurer qu'à coder. DDEV règle le problème : il fait tourner chaque projet dans ses propres conteneurs Docker, avec la bonne version de PHP et une URL en HTTPS.

Prérequis

  • Docker Desktop (ou OrbStack, Colima, Rancher Desktop…) démarré ;
  • DDEV installé : winget install DDEV.DDEV sous Windows, brew install ddev/ddev/ddev sous macOS ;
  • c'est tout : PHP et Composer tournent dans le conteneur.

Créer le projet

Dans un dossier vide, on déclare un projet Drupal 11, on démarre les conteneurs puis on récupère le code avec Composer :

mkdir mon-site && cd mon-site
ddev config --project-type=drupal11 --docroot=web --php-version=8.4
ddev start
ddev composer create-project "drupal/recommended-project:^11"
ddev composer require drush/drush

La configuration générée tient dans .ddev/config.yaml. Elle se versionne avec le projet : toute l'équipe obtient exactement le même environnement.

name: mon-site
type: drupal11
docroot: web
php_version: "8.4"
webserver_type: nginx-fpm
database:
  type: mariadb
  version: "11.8"
nodejs_version: "24"

Installer Drupal

Drush installe le site sans passer par le navigateur. L'option --locale=fr télécharge et importe la traduction française au passage :

ddev drush site:install standard --locale=fr --site-name="Mon site" -y
ddev drush uli   # lien de connexion à usage unique pour le compte admin
ddev launch      # ouvre https://mon-site.ddev.site

Le piège : l'antivirus qui intercepte le HTTPS

Sur certains postes, composer require échoue avec SSL certificate problem: unable to get local issuer certificate, alors que tout fonctionne depuis le navigateur. Le coupable est souvent un antivirus (ou un proxy d'entreprise) qui analyse le trafic HTTPS et le re-signe avec sa propre autorité de certification. Windows lui fait confiance, le conteneur Linux non.

La solution propre : exporter le certificat racine de l'antivirus et l'ajouter au conteneur via un fichier .ddev/web-build/pre.Dockerfile.ca :

# Le certificat est placé à côté, dans .ddev/web-build/
COPY antivirus-root-ca.crt /usr/local/share/ca-certificates/antivirus-root-ca.crt
RUN update-ca-certificates

Un ddev restart reconstruit l'image et Composer retrouve Internet.

Astuce : ddev describe affiche les URL, ports et identifiants de la base de données du projet.