Desde hace un tiempo comencé a usar esta gran herramienta que nos facilita la creación de entornos locales basados en containers de Docker, en este artículo quiero contarte de que se trata y algunas de las características que a mi parecer lo hacen genial para trabajar sitios Drupal.
¿Qué es Lando?
Es una herramienta multiplataforma y open source que simplifica la gestión de los containers necesarios para trabajar en un entorno local, para ayudarnos a trabajar con tecnologías que asemejan nuestro entorno productivo, esta configuración es por medio de archivos fáciles de entender para que todos los desarrolladores de un proyecto puedan trabajar con las mismas versiones de cada servicio.
Lando usa containers de Docker y te preguntarás porque no hacerlo directamente con Docker compose y la respuesta es porque esta herramienta reduce aún más la complejidad para orquestar múltiples servicios.
Recetas
Para nuestro caso Lando cuenta con recetas listas para trabajar con Drupal 8 y 9, esto quiere decir que el se encarga de configurar containers para PHP, MySql servidos por medio de Nginx o Apache según nuestra elección.
Estas recetas nos sirven como punto de partida para generar sistemas mas complejos, con servicios como Solr, Elasticsearch, Redis, Memcached, Nodejs, entre otros.
Configuración
Te voy a mostrar las configuraciones mínimas que necesitas para trabajar un sitio Drupal con Lando.
.lando.yml
Este archivo debe ir en la raíz de tu proyecto al mismo nivel del archivo composer.json
name: nombre-del-projecto
recipe: drupal9
config:
webroot: web
php: '7.3'
via: nginx
drush: false
xdebug: false
database: mariadb
composer_version: 2
services:
mailhog:
type: mailhog
hogfrom:
- appserver
tooling:
drush:
service: appserver
env:
DRUSH_OPTIONS_URI: "https://jidrone.lndo.site"
env_file:
- .lando.env
Como puedes ver a simple vista puedes reconocer la versión de cada servicio, el tipo de servidor web y otras cosas sin necesidad de ser un experto en Docker.
Solo voy a aclarar algunas partes no tan obvias:
Drush
Para Drupal 9 es necesario dejar drush: false, esto es porque desde drupal 9 drush no debe instalarse globalmente sino por proyecto via composer.
lando composer require drush/drush
Para Drupal 8 puedes dejarlo asi:
drush: 9.6.0-rc3
MailHog
Este servicio te permite capturar los correos electrónicos que son enviados por tu sitio, lo que te ayudará a probar correos como el de registro de usuarios y esas cosas.
Variables de Entorno
Para esto puedes crear un archivo con el nombre que quieras, yo normalmente lo llamo .env o .lando.env, este archivo lo configuras en archivo .lando.yml de la siguiente manera
env_file:
- .lando.env
Este archivo debe contener los siguientes datos:
MYSQL_USER=drupal9
DRUPAL_MYSQL_HOST=database
MYSQL_PASSWORD=drupal9
MYSQL_DATABASE=drupal9
MYSQL_PORT=3306
Drupal Settings PHP
Si has trabajado con Drupal sabes que algunas configuraciones importantes entre ellas la conexión con la base de datos están en un archivo llamado settings.php, justamente esos datos son los que vamos a agregar con las variables de entorno que definimos anteriormente, esto nos sirve para poder agregar este archivo al versionamiento de código y poder definir esas variable en el entorno de producción.
$databases['default']['default'] = [
'database' => getenv('MYSQL_DATABASE'),
'driver' => 'mysql',
'host' => getenv('MYSQL_HOSTNAME'),
'namespace' => 'Drupal\\Core\\Database\\Driver\\mysql',
'password' => getenv('MYSQL_PASSWORD'),
'port' => getenv('MYSQL_PORT'),
'prefix' => '',
'username' => getenv('MYSQL_USER'),
];
Comandos Básicos
Lando Start
La primera vez que corres este comando construye los containers y los inicia, pero unas vez construidos las siguentes veces solo los inicia.
Lando Restart
Como su nombre lo indica solo lo usas para reiniciar los containers.
Lando rebuild
Este comando reconstruye los containers, lo que es necesario cuando necesita cambiar la versión de alguno servicio como PHP, MySql, etc.
Lando Info
Te muestra información importante de los servicios, como su versión, volúmenes, puertos expuestos e internos, entre otras cosas.
Tooling
Esto te permite usar las herramientas de línea de comandos que necesites sin tener que ingresar a cada container, pero esto es más fácil de entender con algunos ejemplos.
Composer
lando composer require drupal/group
Drush
lando drush en group
Drupal Console
lando drupal gpb
Conclusion
Con este articulo te mostré cosas muy básicas de Lando con las que puedes comenzar a usarlo, pero esta herramienta es muy potente y aun puedes sacarle mucho más provecho, así que espero haberte motivado a probarlo.