Lando
Conceptos Clave
Lando es una plataforma de desarrollo local basada en Docker que simplifica la creación y gestión de entornos consistentes para proyectos web. Permite definir infraestructuras completas con servicios como bases de datos, servidores web, colas de mensajes o cachés, usando una sintaxis declarativa en YAML.
Su principal objetivo es automatizar y estandarizar entornos de desarrollo, asegurando que todos los miembros de un equipo trabajen con configuraciones idénticas y reproducibles.
Características Principales
- Infraestructura reproducible: cada entorno está definido por un archivo
.lando.yml, lo que garantiza coherencia entre entornos locales, de staging y producción. - Integración con contenedores: usa Docker internamente, abstrae su complejidad y proporciona comandos más sencillos.
- Compatibilidad con frameworks: incluye recetas para proyectos como Drupal, Laravel, WordPress, Node.js, Python, Django, Flask o Rails.
- Integración CI/CD: puede integrarse con pipelines de CICD para pruebas automatizadas y despliegues.
- Soporte para bases de datos y servicios: MySQL, PostgreSQL, Redis, MongoDB, Elasticsearch, entre otros.
- Networking inteligente: mapeo automático de puertos, soporte para HTTPS local, y dominio local con
.lndo.site.
Estructura del Archivo .lando.yml
El archivo .lando.yml define los servicios, herramientas y comportamientos del entorno.
Ejemplo básico:
name: mi-proyecto
recipe: node
services:
db:
type: postgres:14
portforward: 5432
creds:
user: dev
password: devpass
tooling:
npm:
service: appserver
cmd: npm
`
Elementos principales
name: nombre del entorno, se usa para prefijos de red y rutas locales.recipe: define el tipo de aplicación (node, drupal, python, etc).services: lista los contenedores personalizados que se lanzarán con el proyecto.tooling: define comandos personalizados que se ejecutan dentro del entorno.
Comandos Útiles
Lando proporciona una interfaz CLI muy intuitiva para gestionar entornos locales.
Inicialización y gestión
lando init
lando start
lando stop
lando restart
lando destroy
Información y logs
lando info
lando logs
lando ssh
Ejecución de comandos dentro del contenedor
lando npm install
lando composer install
lando drush status
Cada comando se ejecuta en el contexto de su servicio, evitando conflictos con entornos del sistema host.
Integración con Testing y CICD
Lando puede integrarse fácilmente con entornos de testing continuo. Ejemplo de configuración con GitHub Actions:
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Instalar Lando
run: curl -fsSL https://get.lando.dev/setup-lando.sh | bash
- name: Iniciar entorno
run: lando start
- name: Ejecutar tests
run: lando npm test
Esto permite usar entornos idénticos en local y en CI, reduciendo errores por diferencias de configuración.
Casos de Uso Comunes
- Entornos de desarrollo consistentes: evita el clásico “funciona en mi máquina”.
- Prototipado rápido: permite levantar entornos completos en segundos.
- Testing local y sandboxing: ideal para probar cambios sin afectar producción.
- Desarrollo multi-stack: combina múltiples servicios (PHP + Redis + PostgreSQL + Node.js, etc.).
- Automatización de pipelines de desarrollo: facilita la integración con sistemas de despliegue y Testing automatizado.
Comparación con Docker Directo
| Característica | Lando | Docker CLI/Compose |
|---|---|---|
| Facilidad de uso | Alta (abstracción completa) | Media (requiere conocimientos previos) |
| Configuración inicial | Sencilla con .lando.yml |
Manual con docker-compose.yml |
| Compatibilidad CI/CD | Integrada | Requiere scripts personalizados |
| Mantenimiento | Centralizado | Descentralizado |
Buenas Prácticas
- Mantener el
.lando.ymlversionado junto al código fuente. - Usar variables de entorno (
.env) para credenciales sensibles. - Crear alias CLI para comandos frecuentes (
lando db-import,lando npm run dev, etc). - Documentar dependencias y servicios en el README del proyecto.
- Mantener las recetas actualizadas con
lando update.
Integración con Sistemas y Entornos Locales
Lando puede convivir con otros servicios locales sin conflicto, gracias a su aislamiento por red interna. Ideal para desarrolladores que usan herramientas como Virtualizacion o entornos como dev env configurados con múltiples stacks.
También soporta proxies locales y certificados automáticos, simplificando la configuración HTTPS local y la comunicación entre servicios externos (como APIs o microservicios).
Recursos y Referencias
- Documentación oficial de Lando
- Repositorio GitHub
- Recipes | Lando 3
- Lando Service | Lando 3
- Integración con Docker Compose
Lando — Conceptos Avanzados y Extensiones
- devops
- Docker
- Virtualizacion
- local
- Sistemas
- CICD
- Testing
- Infraestructura como código
- Desarrollo local
- Microservicios
Arquitectura Interna
Lando se construye sobre docker compose, pero añade una capa de abstracción inteligente:
- Utiliza un proxy inverso central que enruta peticiones HTTP(S) hacia los contenedores según el nombre de host local.
- Cada entorno se aísla mediante redes personalizadas de Docker, evitando conflictos entre proyectos.
- Implementa un sistema de tooling wrappers, que ejecuta comandos dentro del contenedor correcto sin necesidad de entrar manualmente con
docker exec. - El comando
lando inforevela cómo se traduce el.lando.ymla la configuración real de Docker (contenedores, puertos, redes, volúmenes).
Workflows Avanzados
- Entornos efímeros: Lando permite crear entornos desechables (
lando destroy+lando start) para testing rápido o revisión de ramas. - Integración con git hooks: se puede automatizar
lando rebuildo tareas previas agit pushmediante scripts. - Sincronización de datos: se pueden montar volúmenes compartidos o importar dumps de base de datos directamente (
lando db-import). - Snapshots de entorno: posibilidad de guardar el estado completo de un entorno para restaurarlo luego en otra máquina.
Performance y Optimización
- Evitar sincronización pesada: montar solo carpetas necesarias (
app,src,public) y excluirnode_modulesovendor. - Usar
lando rebuilden lugar delando restartcuando cambian configuraciones base (recetas, servicios). - Deshabilitar servicios no usados (por ejemplo Redis o Solr) para reducir uso de RAM.
- Montajes NFS o Mutagen: permiten un rendimiento óptimo en macOS y Windows al sincronizar archivos más rápido que el sistema de archivos nativo de Docker.
Extensión de Servicios Personalizados
Además de las recetas oficiales, se pueden agregar servicios externos:
services:
mailhog:
type: mailhog
portforward: 8025
redis:
type: redis
api:
type: node:18
overrides:
command: npm run dev
`
Esto permite extender un stack estándar con microservicios, colas de mensajes, o APIs auxiliares.
Integración con Infraestructura como código
Lando puede actuar como capa local de desarrollo para proyectos que usan:
- Terraform o Pulumi para infraestructura cloud.
- Ansible o Chef para aprovisionamiento.
- Docker Compose y Kubernetes para despliegues de staging.
La idea es que el entorno Lando imite la topología de producción definida por estos sistemas, facilitando pruebas locales coherentes con la infraestructura real.
Seguridad en Entornos Locales
- Aislamiento de red: cada entorno tiene su propia red interna de Docker.
- HTTPS local automático: genera certificados auto-firmados para los dominios
.lndo.site. - Gestión de secretos: permite usar
.envo integración con gestores externos (ej. Vault o Doppler) mediante scripts enevents. - Protección de credenciales: no incluir contraseñas en
.lando.yml; usar variables de entorno o archivos ignorados por git.
Integración con Testing Automatizado
Lando puede orquestar entornos de pruebas paralelas, creando servicios independientes para ejecutar suites de test:
lando test-unitlando test-e2elando coverage
Además, puede generar logs estructurados para ser analizados por herramientas de CI (como GitHub Actions, GitLab CI o Jenkins).
Lando en Proyectos Microservicios
Lando puede servir como “mini orquestador” local para múltiples servicios:
- Backend (Node, Python, Go)
- Frontend (Vite, Next.js)
- Base de datos (Postgres)
- Mensajería (RabbitMQ, Redis)
- API Gateway o proxy
Cada microservicio tiene su propio contenedor y se comunica por la red interna de Lando. Esto permite simular arquitecturas distribuidas sin necesidad de usar Kubernetes.
Eventos y Automatización
Los hooks events permiten definir tareas automatizadas:
events:
post-start:
- appserver: npm install
- db: ./scripts/migrate.sh
Casos de uso:
- Ejecutar migraciones al iniciar el entorno.
- Instalar dependencias automáticamente.
- Llamar APIs externas para poblar datos de prueba.
- Ejecutar linters o validadores antes del arranque.
Escenarios Prácticos
- Agencias o equipos grandes: mantener entornos uniformes para varios clientes sin conflictos.
- Desarrollo offline: Lando permite trabajar sin conexión una vez construida la imagen.
- Proyectos legacy: crear entornos antiguos (PHP 5, MySQL 5.6, etc.) sin afectar el sistema host.
- Formación técnica: ideal para talleres o bootcamps donde los estudiantes pueden levantar entornos preconfigurados con un solo comando.
Problemas Comunes y Soluciones
| Problema | Causa | Solución |
|---|---|---|
| “Port already in use” | Puerto ocupado por otro contenedor local | Modificar portforward en .lando.yml |
| “Permission denied” | Montaje de carpetas en Windows/macOS | Revisar permisos o usar NFS |
Cambios en .env no aplican |
Variables cacheadas | Ejecutar lando rebuild |
Dominios .lndo.site no resuelven |
Proxy desactivado | Reiniciar servicio proxy de Lando (lando poweroff) |
Ecosistema y Comunidad
- Repositorio principal: github.com/lando/lando
- Foro y Discord: soporte comunitario activo.
- Extensiones oficiales:
lando phpstorm,lando healthcheck,lando debug. - Plugins de terceros: integración con IDEs, WSL2, Docker Desktop y herramientas de testing.
Enlaces Recomendados
- Documentación avanzada de eventos
- Configuración de rendimiento en macOS/Windows
- Integración con proxies y HTTPS
- Plugins y extensiones
Lando — Integraciones, Casos de Uso y Troubleshooting Avanzado
- devops
- Docker
- Virtualizacion
- local
- Sistemas
- CICD
- Testing
- Microservicios
- Infraestructura como código
- Desarrollo local
Integración con Kubernetes y Contenedores Remotos
Aunque Lando está diseñado para entornos locales, puede interoperar con clústeres remotos:
- Usando el servicio
compose:se puede conectar con Docker contexts o remotos (por ejemplo, Docker Engine en una VM o servidor). - Permite simular configuraciones de pods y servicios que luego se desplegarán en Kubernetes.
- Facilita la transición de proyectos monolíticos a microservicios al mantener entornos aislados con dependencias reproducibles.
Ejemplo: replicar una app preparada para despliegue en Kubernetes
services:
api:
type: node:18
overrides:
command: npm run dev
environment:
API_URL: http://api.lndo.site
mongo:
type: mongo:6
portforward: 27017
`
Con esto se pueden crear entornos que imitan la topología Kubernetes (microservicios + base de datos + networking interno) sin necesidad de un clúster.
Lando en Equipos Distribuidos y Remote Development
- Soporta la clonación exacta de entornos entre equipos mediante control de versiones (
.lando.yml+.env). - Puede integrarse con entornos de desarrollo remoto como GitHub Codespaces, Dev Containers o JetBrains Gateway, lanzando Lando dentro del contenedor remoto.
- Los desarrolladores pueden sincronizar el entorno sin necesidad de instalar dependencias nativas (solo Docker y Lando).
- Mejora la productividad en proyectos con equipos multinube o híbridos.
Integración con Observabilidad y Monitoreo
Lando puede integrarse con herramientas de observabilidad en modo local:
- Permite añadir servicios como
grafana,prometheusolokial entorno. - Se pueden exponer métricas del stack (por ejemplo, tiempos de respuesta, uso de CPU, logs centralizados).
- Ideal para pruebas de instrumentación o debugging de entornos CI/CD antes del despliegue.
Ejemplo de stack con observabilidad local
services:
api:
type: node:20
prometheus:
type: compose
services:
prometheus:
image: prom/prometheus
ports:
- "9090:9090"
grafana:
type: compose
services:
grafana:
image: grafana/grafana
ports:
- "3000:3000"
Extensión del Tooling
El sistema de tooling permite personalizar comandos locales para distintos servicios o tareas internas.
tooling:
test:
service: appserver
cmd: pytest
cache-clear:
service: appserver
cmd: npm run clear-cache
Esto permite crear alias reutilizables en CI, o automatizar flujos comunes sin depender de scripts externos.
Entornos Multi-Stack y Versionado
- Lando soporta coexistencia de distintos stacks (PHP 8, Node 20, Python 3.12) dentro del mismo entorno.
- Permite probar actualizaciones de frameworks o dependencias sin alterar el entorno principal (
lando cloneolando rebuild). - Compatible con múltiples versiones de bases de datos, lo que facilita testing de compatibilidad.
Integración con API Gateway y Servicios Externos
Puede simular escenarios donde el entorno local interactúa con APIs externas:
- Uso de proxies locales (
lando proxy) para enrutar tráfico hacia endpoints externos o túneles SSH. - Ideal para desarrollo de integraciones con APIs de terceros, sin exponer el entorno público.
- Puede integrarse con herramientas como ngrok o LocalTunnel para probar callbacks o webhooks.
CI/CD Local Simulado
Lando puede actuar como entorno de staging temporal:
- Se pueden ejecutar pipelines CI locales (
lando ci run) antes de enviar cambios. - Permite probar builds, migraciones y tests unitarios en un entorno idéntico al pipeline remoto.
- Reduce fallos por diferencias entre entornos de desarrollo y producción.
Ejemplo de integración local CI
lando ci build
lando ci test
lando ci deploy --dry-run
Migración y Compatibilidad entre Sistemas
- Lando abstrae las diferencias entre macOS, Linux y Windows.
- Usa variables globales (
LANDO_HOST_OS) para adaptar comportamientos. - Permite definir rutas condicionales o volúmenes distintos según el sistema operativo.
- Se pueden compartir entornos entre equipos con diferentes OS sin conflictos.
Mantenimiento y Depuración
lando poweroff: apaga todos los servicios globales y libera puertos.lando rebuild --pull: reconstruye imágenes actualizadas sin borrar volúmenes.lando scan: lista entornos activos y verifica dependencias.lando healthcheck: comprueba el estado de los servicios (útil para pipelines).lando repair: repara inconsistencias comunes (por ejemplo redes huérfanas o proxies bloqueados).
Lando en Contextos de Educación y Formación
- Permite preparar entornos preconfigurados para talleres, cursos o bootcamps.
- Cada alumno puede clonar el repositorio y ejecutar
lando startpara tener el entorno listo. - Reduce la fricción en asignaturas o proyectos donde las dependencias cambian entre sistemas.
- Ideal para enseñanza de Docker, CICD, Testing y buenas prácticas de devops.
Compatibilidad con VSCode y Entornos de Desarrollo
- Lando detecta automáticamente configuraciones de VSCode (
.vscode/launch.json). - Permite depuración directa de código dentro del contenedor (
lando debug start). - Compatible con extensiones como Remote - Containers y Dev Containers.
- Ofrece integración con terminales embebidos y debugging de scripts Node, PHP o Python.
Troubleshooting Avanzado
| Caso | Diagnóstico | Comando o solución |
|---|---|---|
| Proxy no funciona | Servicio bloqueado o apagado | lando poweroff && lando start |
| Cambios en archivos no reflejados | Problemas de caché de volumen | lando rebuild o docker volume prune |
| “Service not found” | YAML mal indentado o servicio eliminado | Revisar .lando.yml con yamllint |
| Alto consumo de CPU | Servicios innecesarios en ejecución | Comentar servicios no usados en services: |
| Error al iniciar | Versión de Lando desactualizada | lando update |
Lando y la Nube
Aunque Lando es local, puede integrarse con entornos cloud:
- Sincronización de datos con S3 o Azure Blob mediante scripts en
events. - Despliegue de builds desde el entorno local usando
lando push. - Ejecución de pipelines en contenedores de Lando dentro de runners de CI (ej. GitHub o GitLab).
Futuro y Ecosistema
- Lando 4 introduce compatibilidad nativa con Compose V2 y mejoras de rendimiento.
- Roadmap incluye soporte para imágenes BuildKit y servicios externos como Podman.
- La comunidad impulsa nuevas recetas (Astro, Remix, Bun, Deno).
- Ecosistema complementario con
lando-cli,lando-db-tools,lando healthcheck.
Recursos Complementarios
- Guía oficial de debugging en Lando
- Configuración avanzada de proxy
- Mejores prácticas de rendimiento
- Extensiones de terceros y plugins
- Roadmap oficial y releases
Lando - Fundamentos avanzados y temas complementarios
- devops
- Virtualizacion
- Docker
- local
- CICD
- Testing
- Sistemas
- Infraestructura como código
- Automatización
- Desarrollo local avanzado
Integración con entornos modernos
- Compatibilidad con múltiples stacks: Lando permite definir servicios como PHP, Node.js, Python, Go, Ruby, MariaDB, PostgreSQL o Redis, gestionando dependencias sin interferir con el sistema anfitrión.
- Interoperabilidad con herramientas externas: se integra fácilmente con Docker Compose, Podman, Kubernetes o Vagrant, extendiendo su uso más allá de entornos locales.
- Entornos híbridos: puede configurarse para replicar pipelines reales, combinando contenedores locales y servicios en la nube (AWS RDS, S3, GCP, etc.).
Arquitectura de entorno local
- Infraestructura declarativa: usa archivos
.lando.ymlpara definir servicios, rutas, dependencias, comandos y herramientas personalizadas. - Capa de abstracción sobre Docker: traduce configuraciones YAML de alto nivel a instrucciones Docker, simplificando la orquestación.
- Red y DNS internos: cada app Lando tiene su propio dominio (
app.lndo.site) y red aislada, permitiendo acceso entre contenedores sin conflictos de puertos.
Integración con CICD y pipelines
- Permite exportar configuraciones y reproducirlas en entornos de integración continua.
- Facilita la validación de builds y tests localmente antes de ejecutar pipelines remotos.
- Compatible con herramientas como GitHub Actions, GitLab CI, Jenkins y CircleCI.
Ejemplo de integración mínima:
name: myapp
recipe: node
services:
appserver:
type: node:20
build_as_root:
- npm install
tooling:
test:
service: appserver
cmd: npm test
`
Testing y calidad de código
- Lando soporta frameworks de testing integrados como Jest, PHPUnit o Pytest mediante comandos personalizados.
- Puede incluir herramientas de linting y formateo de código para mantener consistencia.
- Permite ejecutar test suites idénticas a las del entorno de producción, reduciendo discrepancias locales.
Ejemplo de ejecución:
lando test
Seguridad y aislamiento
- Cada app tiene su propio espacio de red y volúmenes, evitando fugas de datos o conflictos entre proyectos.
- Posibilidad de incluir variables de entorno cifradas o gestionadas por dotenv.
- Control de acceso granular mediante configuración en
.lando.ymlo Docker capabilities.
Rendimiento y optimización
- Caching inteligente: reutiliza imágenes base y capas intermedias, reduciendo tiempos de build.
- Soporte para mutagen o rsync: sincronización rápida entre archivos locales y contenedores.
- Configuraciones de rendimiento personalizadas: control de CPU, RAM y disco asignados.
Integración con herramientas de desarrollo
- Compatible con IDEs como VS Code, PhpStorm o PyCharm mediante
remote containerso SSH interno. - Soporte nativo para depuración (
xdebug,node inspect,pdb). - Integración con sistemas de logs y monitoreo como Loki, Prometheus o Grafana mediante puertos expuestos.
Automatización y scripting
- Permite crear scripts personalizados dentro de
.lando.ymlpara ejecutar tareas recurrentes. - Se puede integrar con Makefile, npm scripts o task runners para pipelines locales.
Ejemplo de script:
tooling:
migrate:
service: appserver
cmd: npm run migrate
Casos de uso avanzados
- Prototipado rápido: ideal para crear entornos temporales o de demostración.
- Entornos multi-repo: varios servicios pueden unirse bajo una red Lando común.
- Simulación de producción: replicar configuraciones reales (caches, balanceadores, certificados SSL) sin depender de entornos cloud.
Comparativas y ecosistema
- Lando vs Docker Compose: Lando ofrece una capa de simplicidad sobre Compose con tooling integrado, preconfiguración de stacks y DNS interno.
- Lando vs Vagrant: Lando es más ligero y rápido, basado en contenedores, mientras Vagrant usa máquinas virtuales completas.
- Lando vs DDEV: ambos se usan en desarrollo web; Lando es más flexible para stacks diversos, mientras DDEV está más enfocado a CMS (Drupal, WordPress).
Buenas prácticas
- Versionar siempre el archivo
.lando.yml. - Mantener configuraciones comunes en plantillas o repos compartidos.
- Automatizar inicialización (
lando start && lando build) y teardown (lando destroy) en scripts del proyecto. - Alinear los entornos locales con los de CI/CD para asegurar paridad.
Recursos complementarios
- What is Lando-
- Documentación oficial de Lando
- Ejemplos de recetas Lando
- Infraestructura como código
- Automatización DevOps
- Contenedores y orquestación
- Testing automatizado
¿Te gusta este contenido? Suscríbete vía RSS