Um ambiente de desenvolvimento é composto por vários serviços, no mínimo temos um servidor Web e Um banco de dados, com o surgir do Docker e o maravilhoso docker-compose.yml facilitou bastante a nossa vida, mas calma, dá pra ficar ainda melhor.
O Que é o Lando?#
Um superset para o Docker, o Lando fornece maneiras para os desenvolvedores executarem comandos complexos, criarem etapas e automação em seus serviços sem o uso de Dockerfile, docker-compose.yml ou longos comandos docker exec.
Mas não posso apenas usar o Docker?#
Sim, mas veja bem, ele é feito para simplificar e acelerar a criação de ambiente de desenvolvimento, então sim, você pode utilizar o Docker mas o Lando vai fazer a mesma coisa com apenas um único comando.
Veja um exemplo da mesma aplicação:
Com lando.yml
name: myapp
recipe: drupal9
Com docker-compose.yml
version: "3"
services:
mysql:
image: mysql:8.0
container_name: mysql
command: --default-authentication-plugin=mysql_native_password
restart: unless-stopped
env_file: .env
volumes:
- db-data:/var/lib/mysql
networks:
- internal
drupal:
image: drupal:8.7.8-fpm-alpine
container_name: drupal
depends_on:
- mysql
restart: unless-stopped
networks:
- internal
- external
volumes:
- drupal-data:/var/www/html
webserver:
image: nginx:1.17.4-alpine
container_name: webserver
depends_on:
- drupal
restart: unless-stopped
ports:
- 80:80
volumes:
- drupal-data:/var/www/html
- ./nginx-conf:/etc/nginx/conf.d
networks:
- external
networks:
external:
driver: bridge
internal:
driver: bridge
volumes:
drupal-data:
db-data:
Então se isso não te convenceu a usar o Lando não sei mais o que dizer.
Mão na massa#
Para facilitar o entendimento vamos subir um servidor PHP e Mysql, o famoso LAMP, mas não se prensa nisso o Lando possui diversas receitas tornando possível rodar vários serviços de uma forma simples.
Instalando o Lando#
O Lando tem uma documentação bem completa, antes não se esqueça de instalar o Docker então para instalá-la vamos seguir a documentação oficial.
Subindo uma aplicação LAMP#
Lamp (Linux, Apache, MySQL, PHP/Perl/Python) é uma sigla para as aplicações web mais utilizadas em conjunto e, por esse motivo, existem diversas ferramentas para isso, o Lando é mais uma forma.
Primeiro vamos criar um diretório do projeto:
mkdir lamp_lando
Abrimos a pasta:
cd lamp_lando
Dentro do diretório basta inicializarmos o Lando com:
lando init
Aqui serão feitas alguma perguntas sobre o projeto, que será de acordo com a stack desejada, para o nosso projeto iremos responder da seguinte forma:
From where should we get your apps's codebase? : [current working directory]
What recipe do you want to use?: [lamp]
Where is your webroot relative to the init destination?: [.]
What do you want to call this app? [LAMP Project]
E iniciamos nossa aplicação:
lando start
Aguarde um pouco, serão baixados os containers docker, isso pode demorar um pouco dependendo do seu computador e sua internet, e assim que terminado você terá uma tela parecida com a abaixo:
___ __ __ __ __ ______
/ _ )___ ___ __ _ ___ / / ___ _/ /_____ _/ /__ _/ /_____ _/ / / /
/ _ / _ \/ _ \/ ' \(_-</ _ \/ _ `/ '_/ _ `/ / _ `/ '_/ _ `/_/_/_/
/____/\___/\___/_/_/_/___/_//_/\_,_/_/\_\\_,_/_/\_,_/_/\_\\_,_(_|_|_)
Your app has started up correctly.
Here are some vitals:
NAME my-lando-app
LOCATION /home/diego/Projects/lamp_lando
SERVICES appserver, database
APPSERVER URLS https://localhost:49185
http://localhost:49186
http://my-lando-app.lndo.site/
https://my-lando-app.lndo.site/
Tudo configurado para isso vamos criar um arquivo info.php com o seguinte conteúdo:
<?php
phpinfo();
E acessando o servidor do lando /info.php vamos ver nosso servidor rodando.

Listando dados do Lando#
Um outro comando muito útil é o lando info ele lista todas as configurações do servidor, como endereço do servidor web, banco de dados e até as senhas do banco, segue um exemplo da saída do comando:
[ { service: 'appserver',
urls:
[ 'https://localhost:49185',
'http://localhost:49186',
'http://my-lando-app.lndo.site/',
'https://my-lando-app.lndo.site/' ],
type: 'php',
healthy: true,
via: 'apache',
webroot: '.',
config: {},
version: '7.4',
meUser: 'www-data',
hasCerts: true,
hostnames: [ 'appserver.mylandoapp.internal' ] },
{ service: 'database',
urls: [],
type: 'mysql',
healthy: true,
internal_connection: { host: 'database', port: '3306' },
external_connection: { host: '127.0.0.1', port: '49182' },
healthcheck: 'bash -c "[ -f /bitnami/mysql/.mysql_initialized ]"',
creds: { database: 'lamp', password: 'lamp', user: 'lamp' },
config: {},
version: '5.7',
meUser: 'www-data',
hasCerts: false,
hostnames: [ 'database.mylandoapp.internal' ] } ]
E, como mágica temos um ambiente de desenvolvimento configurado.
Ambiente de desenvolvimento, não se esqueça#
Na própria documentação oficial é dito claramente que o Lando é uma ferramenta para criar e facilitar ambientes de desenvolvimento, então, em hipótese alguma o utilize em um ambiente de produção.
Alguns comandos#
Antes de tudo vou deixar aqui uma lista de comandos essenciais, uns utilizados acima e outros não, mas que podem ajudar bastante.
lando config#
Exibe a configuração do Lando.
lando destroy#
Destrói a aplicação, apagando por completo os containers e volumes do Docker criados.
lando info#
Exibe a configuração da aplicação, como endereços do servidor web e banco de dados, assim como senhas do mesmo.
lando init#
Inicializa um projeto com Lando.
lando list#
Lista todos os serviços rodando com Lando.
lando poweroff#
Desliga todos os containers da aplicação.
lando rebuild#
Recria a aplicação do zero mas mantém os dados.
lando restart#
Reinicia a aplicação.
lando start#
Inicia a aplicação.
lando stop#
Para a aplicação.
lando ssh#
Acessa o shell da aplicação.

Comentários
Os comentários usam Disqus e só são carregados se você clicar no botão abaixo.