Lando pour tous nos environnements de développement Drupal

Vendredi 26 Février 2021

L'équipe a massivement adopté Lando pour disposer d'environnements de développement locaux identiques.

Environnement développement Lando Drupal

La problématique d'une équipe de développement : travailler ensemble

C'est génial, l'équipe grandit. Elle s'agrandit. On peut maintenant être plus nombreux sur certains projets. OK, mais comment on organise ça ? Travailler ensemble, sans se marcher sur les pieds, produire des procédures en laissant de la flexibilité aux équipes... Tel est désormais le quotidien de chaque équipe projet. Nous devons bichonner ces problématiques organisationnelles, nous devons nous écouter, y consacrer de l'énergie. Dans cette situation, lorsqu'un outil résout une situation sans trop d'efforts, il devient impératif de le déployer et de l'imposer. C'est ce que nous avons fait avec Lando.

Lando ?

Lando est une surcouche d'un conteneur Docker. Il facilite la vie de notre équipe de développeurs Drupal. En quelques minutes, vous disposez de votre environnement local et surtout, vous savez que tous les membres de votre équipe travaillent dans les mêmes conditions.

Lando permet : 

  • De disposer facilement d'un environnement de développement local ;
  • De disposer d'un environnement iso à mes collègues, qui travaillent sur le même projet ;
  • De gérer facilement des configurations pénibles comme le SSL, les clés SSH, les configurations répétitives ;

En clair, Lando harmonise les relations entre développeurs, qui viennent souvent d'horizons différents, utilisent des configurations logicielles locales variées. Il permet de plus facilement intégrer et dépanner des développeurs. Il permet de travailler sur des projets de plus grande envergure.

Commencer avec Lando

Démarrer Lando

lando start

Cette commande va démarrer le conteneur de l'application. On peut ensuite directement accéder au site via l'URL donnée par Lando (par exemple http://mon-site.lando.site). La première fois, Lando va d'abord construire le conteneur pour le projet.

Eteindre Lando

lando stop

Cette commande éteint l'application.

lando poweroff

Cette commande éteint toutes les applications lando ouvertes.

Outils à utiliser dans Lando :

lando composer            Runs composer commands
lando db-export [file]    Exports database from a service into a file
lando db-import <file>    Imports a dump file into database service
lando drupal              Runs drupal console commands
lando drush               Runs drush commands
lando mysql               Drops into a MySQL shell on a database service
lando php                 Runs php commands

Pour les projets Drupal nous utilisons et consommons tous nos outils et services habituels dans le conteneur Lando. Nous devons toujours faire précéder la commande que l'on veut exécuter par lando afin d'exécuter la commande dans le conteneur.

Par exemple pour mettre à jour Drupal on fera ces commandes :

lando composer update drupal/core --with-dependencies
lando drush updb
lando drush cr 
Informations à propos du conteneur
lando info

Utile pour voir l'URL du site local ou de PhpMyAdmin par exemple.

Accès aux logs d'erreur :

lando logs

Tail logs :

lando logs -s appserver -f

Configuration : Landofile .lando.yml

Le dépôt Git du projet Drupal doit contenir le fichier de configuration de Lando. Ce fichier indique à Lando les services à installer dans le conteneur Docker et éventuellement la version de ces services (Apache, Nginx, Solr, Varnish, PHP, MySQL, Node, PhpMyAdmin, etc.) Si la configuration de Lando change (par exemple si on veut modifier la version de PHP), il faut alors reconstruire le conteneur avec la commande :

lando rebuild -y

Exemple d'installation d'un site

On clone le dépôt du projet lesiteweb.com en local et on se place dans le répertoire du projet :

git clone bluedrop@gitea.bluedrop.club:bluedrop/lesiteweb.git
cd lesiteweb
git checkout prod (ou autre)

On ajoute un fichier settings.php pour le site :

cp sites/settings-lando.php sites/default/settings.php

On récupère la base de données à partir d'un dump sur le serveur :

scp -P2222 lesiteweb@bluedrop-www.bluedrop.club:~/database.sql.gz

On démarre Lando, Lando va automatiquement construire le conteneur :

lando start

On installe les dépendances de Drupal :

lando composer install

On importe la base de données :

lando db-import database.sql.gz

On peut maintenant ouvrir le site localement dans le navigateur: https://lesiteweb.lndo.site

On peut par exemple compiler les assets avec Webpack comme ceci :

cd themes/bluedrop/assets
lando npm i
lando npm run build

Ressources : 
Lisez la documentation Lando.
Lisez la documentation Docker et un post sur son installation.
Lisez la documentation de Docker Compose.