Création d'un environnement de développement Drupal
Cela fait un certain temps que je souhaitais écrire un article sur la mise en place d'un environnement de développement pour Drupal. Afin de rester le plus clair possible je vais décomposer le sujet en plusieurs parties :
- La mise en place d'un environnement de développement via Lando
- La création d'un socle Drupal (à venir)
- L'utilisation du socle, workflow et bonnes pratiques (à venir)
Mise en place d'un environnement de développement via Lando
Fût un temps, les environnements de développement se résumait à l'installation d'un WAMP / LAMP / MAMP avec les bonnes versions des différents technos (PHP, node etc... ) et c'était tout de même assez fastidieux car il fallait que cette installation et cette configuration soient réalisés sur chacun des postes des développeurs.
Depuis quelques temps maintenant, un petit nouveau est apparu : Docker. Ce dernier permet, entre autres, d'échapper à cette gestion des dépendances et autres extensions... Mais ceci dit, il faut tout de même le faire dans le Dockerfile.
Lors de mon précédent travail, chez Capgemini, nous avions mis en place un environnement de développement à l'aide de Docker. Cependant, je trouvais qu'on avait atteint une certaine limite car je trouve que Docker n'est pas forcément accessible et compréhensible au premier abord. Par ailleurs, j'avais testé le couple traefik et portainer pour gérer plus facilement mes containers / sites mais j'ai rapidement arrêter car c'était assez complexe et trop coûteux en temps.
En arrivant dans mon nouveau travail chez Digital Garden, j'ai pu avoir le temps nécessaire de mettre en place un environnement de développement. Pour cela je me suis basé sur Lando, que j'avais découvert à Capgemini (Merci Nasser ! ;) ). Je l'avais survolé et malheureusement passé à côté du but précis de Lando.
Lando est une surcouche de Docker permettant de mettre en place, sans effort, un environnement, d'automatiser certaines tâches (les tests par exemple).
La documentation est plutôt bien faite ! Des "recettes" (Drupal 8, Wordpress etc...) sont déjà disponibles permettant d'être encore plus rapide pour installer un environnement.
Par exemple, la recette Drupal met à disposition Nginx / Apache, MySQL / MariaDB, Composer, Drush...
La configuration de Lando se résume à la création d'un fichier .lando.yml à la racine du projet.
name: socle-drupal
recipe: drupal8
config:
php: '7.4'
via: apache
webroot: web
xdebug: true
services:
appserver:
php: '7.4'
config:
php: .lando/config/php.ini
database:
type: mariadb:10.1
phpmyadmin:
type: phpmyadmin
hosts:
- database
mailhog:
type: mailhog
hogfrom:
- appserver
node:
type: node
globals:
gulp-cli: "latest"
tooling:
vim:
service: appserver
npm:
service: node
node:
service: node
gulp:
service: node
description: "Compiles SASS"
cmd: gulp
Décomposons ce fichier .lando.yml !
name: socle-drupal
correspond au nom du projet. Par défaut, ce nom sera utilisé pour construire l'URL par défaut du site (socle-drupal.lndo.site).
recipe: drupal8
est la recette utilisée, nous ne sommes pas obligés d'en utiliser. Des recettes sont disponibles pour Wordpress, Drupal 6, 7, 8, Laravel, Python, Ruby...
S'en suit différents "blocs" :
config
permet de modifier la configuration et d'avoir quelque chose qui répond vraiment à nos besoins : version du PHP, activation de xdebug, apache/nginx
services
permet l'ajout de services prédéfinis par Lando, d'y gérer une config particulière de l'application (par l'ajout d'un php.ini custom par exemple).
Je recommande fortement d'ajouter le service `phpmyadmin` et de le brancher sur la base de données, cela évitera de devoir gérer les ports de la base de données (qui, s'ils ne sont pas fixés, seront aléatoires à chaque démarrage du projet.
- La partie
tooling
permet d'ajouter des commandes à l'outil lando. Dans notre cas, nous pourrons, par exemple, exécuter la commande lando npm install
. Npm étant branché sur le service node
, Lando exécutera la commande dans le container node. Nous verrons dans la dernière partie de cette série d'article, l'ajout d'outil très utile pour suivre la qualité du code et le suivi des bonnes pratiques Drupal.
La création de la base de notre environnement de développement est désormais terminée. Nous verrons dans un prochain article, la création du socle Drupal afin d'avoir un environnement de développement Drupal complet !