Desenvolvimento local do WordPress com Lando (ou Docker facilitado)
Publicados: 2019-11-22No início deste ano escrevi um guia sobre como usar o Docker para desenvolver no WordPress. Eu realmente gostei de trabalhar nesse post, e parece que você gostou também (obrigado por todos os seus comentários e e-mails). Se você não leu o post, aqui vai um lembrete rápido:
O Docker é um programa que permite empacotar software em contêineres e executá-los em máquinas virtuais. A principal vantagem do Docker é que seus contêineres são executados usando o ambiente de virtualização fornecido pelo sistema operacional do host, resultando em contêineres rápidos e leves .
O principal problema que o Docker tem é que sua configuração é complicada . Por exemplo, para criar um ambiente de desenvolvimento WordPress, precisamos iniciar dois (pelo menos) serviços: um serviço de banco de dados e um servidor webapp.
No post que comentei no início vimos uma ferramenta, Docker Compose , que permite definir todos os serviços que temos que rodar para um determinado projeto. Com o Docker Compose , conseguimos definir em um único arquivo docker-compose.yml todas as dependências do nosso projeto e iniciá-lo com um único comando.
Ou foi o que prometi inicialmente, pois fechei o post explicando como configurar mais um serviço Docker que permitiria usar nomes de domínio bonitos em suas instalações do WordPress. Se você se lembrar, com o arquivo docker-compose.yml original, nosso dev env WordPress estaria acessível via http://localhost:8080 . Mas se quiséssemos usar algo como http://myplugin.local , teríamos que configurar um proxy que pudesse resolver nomes de domínio e adicionar mais configurações ao nosso docker-compose.yml …
Eu sei, eu sei - foi muito complicado colocar as coisas em funcionamento! Mas uma vez que você tinha tudo configurado corretamente, era bem fácil, certo? De qualquer forma, resolvi apresentar a vocês meu novo amigo: Lando. Ele o ajudará a configurar novos ambientes de desenvolvimento em segundos.
Entre em Lando
Acho que a melhor maneira de se apresentar ao Lando é usando uma frase da documentação dele:
Lando é para desenvolvedores que desejam evitar o masoquismo de usar diretamente
documentos de Landodockeroudocker-compose.
Sim, aparentemente usar docker e docker-compose é para masoquistas… Então vamos ver como podemos especificar rapidamente e sem complicações todos os serviços que precisamos para trabalhar em um novo projeto WordPress.
Instalando o Lando
A primeira coisa que você deve fazer para poder usar o Lando é (surpresa, surpresa!) instalá-lo em seu computador. O processo de instalação é extremamente simples e está muito bem documentado, mas podemos resumi-lo nos seguintes passos:
- Lando requer o Docker. Se você estiver no Linux, instale primeiro o Docker Community Edition. Se você estiver no Mac ou Windows, o próprio instalador do Lando instalará o Docker se ainda não estiver disponível.
- Baixe o instalador Lando apropriado para o seu sistema operacional. No meu caso, por exemplo, baixei o arquivo
lando-v3.0.0-rc.22.deb(estou no Linux) e instalei comdpkg. Para Mac, use o arquivo.dmge, para Windows, o.exe. - Execute o instalador e siga as etapas.
E é isso!
Como criar um novo projeto WordPress em Lando
A primeira coisa que temos que fazer é ir até a pasta do projeto com a qual queremos trabalhar (ou criar uma nova para ela). No meu caso, vou criar um novo WordPress dev env para desenvolver nosso plugin Nelio A/B Testing, então vou cd para a pasta onde baixei o projeto: ~/dev/plugins/nelio-ab-testing .
Uma vez lá, temos que criar o arquivo de configuração do Lando. Este arquivo é semelhante ao docker-compose.yml , mas muito mais simples. Para começar, você nem precisa escrever — Lando pode fazer isso por você! Basta usar lando init para criar um novo ambiente de desenvolvimento:
lando init \ --recipe wordpress --source remote --remote-url https://wordpress.org/latest.tar.gz --webroot wordpress --name "Nelio AB Testing" # name the project as you wantVamos ver o que a instrução anterior faz:
- Primeiro, dizemos a Lando que queremos criar um novo arquivo de configuração no diretório atual usando
lando init. - O primeiro parâmetro (
--recipe wordpress) diz a Lando que queremos criar um projeto WordPress. Isso ajudará Lando a conhecer os serviços que precisa configurar (um banco de dados, um servidor web, etc). - Em seguida, indicamos que queremos que Lando baixe o WordPress do WordPress.org.
- Com
--webroot wordpress, informamos ao Lando onde o WordPress será instalado. Como acabamos de especificar que o WordPress deve ser baixado do WordPress.org e o zip que o Lando baixará criará uma pastawordpressapós a descompactação, esse é o local que usamos para o Lando. - Por fim, especificamos o nome do nosso projeto (Lando o usará para gerar domínios de URL amigáveis).
Depois de executar o comando anterior, você verá como o Lando instala tudo e o recebe com as seguintes informações:
NOW WE'RE COOKING WITH FIRE!!! Your app has been initialized! Go to the directory where your app was initialized and run `lando start` to get rolling. Check the LOCATION printed below if you are unsure where to go. Oh... and here are some vitals: NAME my-site LOCATION /tmp/plugin RECIPE wordpress DOCS https://docs.devwithlando.io/tutorials/wordpress.html Liste todos os arquivos na pasta atual e você verá que Lando criou um arquivo oculto chamado .lando.yml com o seguinte conteúdo:

name: my-site recipe: wordpress config: webroot: wordpress Extremamente simples, certo? Agora inicie seu serviço usando o lando start e pronto:
BOOMSHAKALAKA!!! Your app has started up correctly. Here are some vitals: NAME my-site LOCATION /tmp/plugin SERVICES appserver, database APPSERVER URLS https://localhost:32781 http://localhost:32782 http://nelio-ab-testing.lndo.site https://nelio-ab-testing.lndo.siteParabéns! Agora você tem uma nova instalação do WordPress em execução. Se agora formos a uma das URLs que Lando listou no início, você verá que basta seguir as etapas para concluir a instalação do WordPress:

Concluindo a instalação do WordPress rapidamente
Obviamente, você pode concluir a instalação do WordPress usando o instalador da tela anterior. Mas existe uma solução ainda melhor: use o WP-CLI, que também temos disponível em Lando.
Para instalar o WordPress com WP-CLI precisamos primeiro criar um wp-config.php no diretório wordpress . Para criar esse arquivo, precisamos de algumas informações sobre nosso banco de dados: onde está, seu nome de usuário e senha, etc. Todas essas informações podem ser encontradas via lando info , que retorna o seguinte JSON:
[ { service: 'appserver', urls: [ 'https://localhost:32781', 'http://localhost:32782', 'http://nelio-ab-testing.lndo.site', 'https://nelio-ab-testing.lndo.site' ], //... }, { service: 'database', //... creds: { database: 'wordpress', password: 'wordpress', user: 'wordpress', }, //... } ] Como o resultado é uma string JSON, podemos usar a ferramenta jq do Unix para recuperar os valores específicos nos quais estamos interessados. Por exemplo, se quisermos conhecer o usuário do nosso banco de dados, basta executar isto:
$ lando info --service database --format json | jq -r ".[0].creds.user" wordpressAgora, vamos aproveitar este comando e recuperar todos os dados relevantes que precisamos para construir o arquivo de configuração usando WP-CLI:
# Find WordPress' directory (webroot entry in .lando.yml) WEBROOT=`grep webroot .lando.yml | cut -d: -f2 | xargs` # Retrieve database credentials using lando info DBNAME=`lando info --service database --format json | jq -r ".[0].creds.database"` DBUSER=`lando info --service database --format json | jq -r ".[0].creds.user"` DBPASS=`lando info --service database --format json | jq -r ".[0].creds.password"` DBHOST=`lando info --service database --format json | jq -r ".[0].hostnames[0]"` # Create WordPress' config file lando wp config create \ --dbname=$DBNAME \ --dbuser=$DBUSER \ --dbpass=$DBPASS \ --dbhost=$DBHOST \ --path=$WEBROOTDepois de criar o arquivo, podemos iniciar o comando de instalação:
# Get WordPress' project name from .lando.yml PROJECT_NAME=`grep name .lando.yml | cut -d: -f2 | xargs` SITE_NAME=`echo "$PROJECT_NAME" | sed -e "s/-/ /g" | sed "s/\b[az]/\u&/g"` # Get one of the possible WordPress' URLs ando created (https) URL=`lando info --service appserver --format json | jq -r ".[0].urls" | grep -vw localhost | grep https: | cut -d'"' -f2` # Extract the domain from the previous URL (removing https) DOMAIN=`echo "$URL" | sed -e "s/^https:\/\///"` # Install WordPress lando wp core install --url=$URL --title="$SITE_NAME" --admin_user=admin --admin_password=password --admin_email=admin@$DOMAIN --path=$WEBROOTFeito! Já temos o WordPress instalado e funcionando.
Como colocar nosso projeto no WordPress
Se agora entrarmos no WordPress e dermos uma olhada nos plugins disponíveis, veremos que nosso plugin (Nelio A/B Testing, no meu exemplo) não está lá. Isso porque o Nelio A/B Testing não está em wordpress/wp-content/plugins/ . Para corrigir isso, basta criar um soft link neste diretório que aponte para a raiz do nosso projeto:
cd wordpress/wp-content/plugins/ ln -s ../../../ nelio-ab-testing cd -E é isso!
Agora cabe a você decidir a abordagem que melhor se adapta às suas necessidades. Se você deseja criar uma instalação do WordPress para cada projeto, basta seguir as etapas que descrevi. Se, por outro lado, você deseja uma única instalação do WordPress com todos os seus temas e plugins, basta criar uma nova pasta, iniciar o Lando e adicionar todos os seus plugins em wordpress/wp-content/plugins/ .
Espero que tenham gostado deste post e ferramenta tanto quanto eu. E espero que isso torne seu trabalho mais fácil e divertido. Desde que usei o Lando, me afastei completamente do Docker.
Imagem em destaque por Victoire Joncheray no Unsplash.
