Lando para desarrollo Drupal

4 minutos

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.

Mailhog Lando

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.

Jidrone Drupal Developer
J. Ivan Duarte
Drupal Senior Developer

Share