Cuando trabajamos con múltiples proyectos que requieren diferentes versiones de los servicios o herramientas que usamos, muchas veces se vuelve muy tedioso y tardado ir cambiándolas conforme vamos brincando de un proyecto a otro.

Si usas Docker sabrás que se pueden crear contenedores para tener en cada uno las distintas configuraciones que cada proyecto requiere, pero incluso esto suele ser algo complicado de manejar si no tienes mucha experiencia.

Lando es la solución a todo  esto, ya que se puede ver como una capa de abstracción a la configuración de los contenedores de Docker y permite en un solo archivo configurar todos los servicios y herramientas que se requieran.

Pero antes de configurar y desplegar nuestro primer entorno de trabajo con Lando, vamos a revisar rápidamente lo que necesitamos para usarlo.

Requerimientos

Sistema operativo

  • macOS 10.13 o superior.
  • Windows 10 Pro+ o equivalente (ej. Windows 10 Enterprise) con Hyper-V activo.
  • Linux con versión del Kernel 4.x o superior.

Docker Engine

Ya que Lando usa Docker engine para la creación de los componentes, revisa también los requerimientos de este antes de continuar.

Algo importante es que si estás usando Windows o macOS el instalador de Lando te instalará también Docker engine si aún no lo tienes.

Requerimientos de hardware

Es importante notar que aunque sean los requerimientos mínimos, si no se cumplen aún así se podrá usar Lando pero tal vez con una experiencia menor a la ideal.

  • 2-core x86-compat procesador.
  • 4GB+ RAM.
  • 25GB+ de espacio en el disco disponible.

Instalación

Para instalar Lando es bastante sencillo, simplemente ingresa a:

https://github.com/lando/lando/releases

y descarga el instalador más reciente de acuerdo a tu sistema operativo.

Si tienes dudas puedes consultar la documentación oficial del Lando:

https://docs.lando.dev/basics/installation.html

Configuración de Lando para proyecto de Laravel

En esta ocasión haremos la configuración para un proyecto de Laravel pero con Lando podemos crear el entorno de trabajo para cualquier tipo de proyecto.

Para encontrar más información sobre las posibles configuraciones con Lando visita su documentación oficial:

https://docs.lando.dev/basics/

Primer paso: Crear el archivo de configuración.

Para comenzar ya debemos tener creado nuestro proyecto de Laravel.

Después ya con Lando instalado y Docker corriendo solo se debe iniciar una terminal dentro del directorio raíz del proyecto.

En la terminal hay que ejecutar el siguiente comando para iniciar la configuración:

lando init
Inicia la configuración con "lando init"

Como se puede ver Lando da la opción para traer los archivos de un proyecto en algún repositorio, pero en este caso como ya tenemos el proyecto creado seleccionaremos la primera opción.

Define el directorio raíz de la app

Después nos permite seleccionar el “recipe” que queramos usar, cada recipe trae una configuración base con los servicios y herramientas necesarios para trabajar con los proyectos. En ese caso seleccionamos Laravel.

Selecciona el recipe "Laravel"

Ahora nos pedirá la raíz web del proyecto, en el caso de Laravel es \public.

Define el directorio raíz web

Y por último pide el nombre de la aplicación, en este caso lo llamaremos "Ejemplo".

Esto creará un archivo de configuración llamado “.lando.yml”

Segundo paso: Modificar el archivo de configuración.

El archivo “.lando.yml” tiene el siguiente contenido.

name: ejemplo
recipe: laravel
config:  
	webroot: public
Contenido por defecto de ".lando.yml"

En este momento podríamos crear el entorno de trabajo con los servicios configurados por defecto pero para mostrar lo sencillo que es modificarlo, cambiaremos los siguientes servicios:

  • PHP en la versión 7.4.
  • MySQL en la versión 8.0.
  • Servidor Nginx.
name: ejemplo
recipe: laravel
config:  
    webroot: public  
    php: 7.4  
    via: nginx  
    database: mysql:8.0
Contenido modificado de ".lando.yml"

Tercer paso: Crear el entorno de trabajo.

Ahora sí, ejecutamos el comando:

lando start

para crear el entorno de trabajo. Esto descargará todo lo que necesitan los contenedores para funcionar por lo que tardará un rato.

Ejecución del comando "lando start"

Una vez terminado el proceso se puede ejecutar el comando:

lando info

para revisar la información de los servicios activos y cómo se puede acceder a ellos interna y externamente.

Ejecución del comando "lando info"

Cuarto paso: Configurar Laravel.

Ya que tenemos creado el entorno de trabajo ahora solo debemos terminar las configuraciones básicas de Laravel.

Primero copiaremos el archivo ".env.example" a ".env" con el comando:

cp .env.example .env

En el archivo generado pondremos la configuración que nos dio el comando:

lando info

De forma que quede de la siguiente manera:

APP_NAME=Ejemplo
APP_ENV=local
APP_KEY=base64:Q8lV1dTsOTeHPNEKMRKk9kcQtTp3NboL1MisGUbE2BY=
APP_DEBUG=true
APP_URL=http://ejemplo.lndo.site

LOG_CHANNEL=stack

DB_CONNECTION=mysql
DB_HOST=database
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=laravel
DB_PASSWORD=laravel

BROADCAST_DRIVER=log
CACHE_DRIVER=file
QUEUE_CONNECTION=sync
SESSION_DRIVER=file
SESSION_LIFETIME=120

REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379

MAIL_MAILER=smtp
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
MAIL_FROM_ADDRESS=null
MAIL_FROM_NAME="${APP_NAME}"

AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=
AWS_DEFAULT_REGION=us-east-1
AWS_BUCKET=

PUSHER_APP_ID=
PUSHER_APP_KEY=
PUSHER_APP_SECRET=
PUSHER_APP_CLUSTER=mt1

MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}"
MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}"
Contenido modificado de ".env"

Es importante que notes que las variables que cambiamos fueron:

  • APP_NAME: Agregamos el nombre de la app.
  • APP_URL: Agregamos el url base que nos da Lando.
  • DB_HOST: Agregamos el host que da Lando para la conexión interna.
  • DB_DATABASE: Agregamos el nombre de la base de datos (Laravel por defecto).
  • DB_USERNAME: Agregamos el nombre de usuario para la base de datos (Laravel por defecto).
  • DB_PASSWORD: Agregamos la contraseña del usuario para la base de datos (Laravel por defecto).

Después sólo debes ejecutar los siguientes comandos:

lando composer install

Con esto se instalarán todas las dependencias de Laravel.

lando artisan key:generate

Esto generará la llave que permitirá a Laravel realizar el cifrado.

Y con esto ya podemos entrar al navegador y ver nuestra app funcionando.

Aplicación funcionando en el navegador

Y eso es todo, como podrás ver es realmente sencillo configurar un entorno de trabajo completo e incluso si compartes el archivo “.lando.yml” es posible que todo tu equipo de trabajo tengan la misma configuración para algún proyecto en el que trabajen juntos.

Lista de comandos frecuentes.

Para finalizar te dejo unos comandos que te pueden ser útiles:

  • Para reconstruir el entorno virtual por si algo sale mal (esto no modifica la base de datos) se usa:
lando rebuild
  • Para destruir todo el entorno de trabajo incluyendo la base de datos se usa:
lando destroy
  • Para usar los comandos de Laravel se usa:
lando artisan <comando de artisan>
  • Para usar los comandos de Composer se usa:
lando composer <comando de composer>
  • Para entrar a la línea de comandos de MySQL  se usa:
lando mysql