De vez em quando, quero configurar uma nova instalação do WordPress para fazer experiências.
O problema é que esta não é uma tarefa particularmente simples. Estas são as etapas que normalmente realizo:
- Crie uma máquina virtual
- Instale o servidor Ubuntu nele e configure a pilha LAMP
- Conecte-se ao MySQL e configure um novo banco de dados e usuário
- Instale o WordPress baixando um arquivo tar e extraindo-o
- Instale um monte de outras coisas que preciso, como
php5-db
elibssh2-php
- Configure o WordPress criando e editando um
wp-config.php
arquivo - Faça várias permissões de arquivo do Linuxy com vários
sudo chown
comandos - O Google para descobrir quais configurações de rede Hyper-V eu preciso para minha VM realmente permitem que eu me conecte a ela de fora
Mesmo seguindo um bom conjunto de instruções como essas, da última vez que tentei fazer isso, demorei várias horas para colocá-lo em funcionamento.
Portanto, decidi que agora que tenho o Docker para Windows instalado na minha máquina de desenvolvimento, quão difícil seria fazer uma instalação do WordPress funcionando usando o Docker?
Instalando WordPress com Docker Compose
A instalação do WordPress consiste em dois componentes – o próprio site do WordPress e um banco de dados MySQL.
Agora, embora seja certamente possível ter ambos em execução em um contêiner do Docker, a maneira recomendada de trabalhar com o Docker é ter um contêiner por componente. E com o Docker Compose isso é realmente fácil de conseguir.
Na verdade, se olharmos para a imagem oficial do WordPress Docker no Docker Hub, ela nos dá um arquivo docker-compose.yml
que podemos cortar e colar, simplesmente substituindo a senha por uma de nossa escolha.
Aqui está meu arquivo docker-compose.yml
:
version: '2'
services:
wordpress:
image: wordpress
ports:
- 8080:80
environment:
WORDPRESS_DB_PASSWORD: wfehxi148s
mysql:
image: mariadb
environment:
MYSQL_ROOT_PASSWORD: wfehxi148s
Como você pode ver, é tão simples que você provavelmente pode adivinhar como funciona, mesmo se nunca tiver usado o Docker Compose antes.
Temos dois contêineres, ou “serviços”, um que chamamos de “wordpress”, que usa a imagem “wordpress” do Docker Hub, e um chamado “mysql” que usa a imagem “mariadb” do Docker Hub (MariaDb é um MySQL banco de dados compatível).
Cada imagem configura uma variável de ambiente, que contém a senha raiz do banco de dados MySQL. E o contêiner “wordpress” irá expor sua porta interna 80 na porta 8080, então quando ele estiver instalado e funcionando, poderei me conectar ao WordPress usando http://localhost:8080.
O Docker Compose assume que esses dois contêineres precisam se comunicar, portanto, configura automaticamente uma rede permitindo que eles se comuniquem, usando seus nomes de contêiner.
Depois de criar esse arquivo docker-compose.yml
, o que está envolvido em sua execução?
Bem, tudo o que precisamos fazer é garantir que nosso Docker para Windows esteja no modo de contêiner do Linux (clique com o botão direito no ícone do Docker na bandeja do sistema e diga “Alternar para contêineres do Linux”) e, em seguida, na mesma pasta do nosso arquivo docker-compose.yml
, digite o comando:
docker-compose up
O que acontecerá a seguir é que as imagens Docker “wordpress” e “mariadb” precisarão ser baixadas pela primeira vez, o que pode levar um ou dois minutos, mas assim que você as tiver, os dois contêineres serão iniciados e, antes que você perceba, terá um sistema WordPress totalmente funcional.
Basta navegar para http://localhost:8080 e você estará pronto para começar a personalizar sua nova instalação do WordPress.
Bem direto. Em comparação com as horas de dor que eu costumava passar sempre que tentava instalar manualmente o WordPress em uma VM, isso é ridiculamente fácil.
Se eu quiser experimentar um novo tema ou plugin do WordPress, posso fazer isso em minutos em um ambiente de área restrita que posso jogar fora, se necessário.
Quando terminar, posso demolir tudo docker-compose down
ou apenas parar temporariamente com docker-compose stop
.
Acesso ao contêiner de baixo nível
Agora, você deve estar se perguntando, o que acontece se eu precisar obter acesso direto a esses contêineres e fazer minhas próprias personalizações?
Por exemplo, eu queria importar o conteúdo de outro site WordPress para o meu contêiner, mas não consegui porque a configuração do PHPupload_max_filesize
não foi definida com um valor grande o suficiente.
Bem, o melhor é que você pode acessar facilmente o interior de seus contêineres com o docker exec
. Eu costumava docker ps
encontrar o identificador do meu contêiner do WordPress, então docker exec -it b12a bash
me colocava em um prompt bash dentro do contêiner.
A partir daí, consegui instalar um editor de texto Linux com o qual posso salvar e sair (ao contrário do vi, que pareço incapaz de aprender) e editar meu arquivo .htaccess
:
apt-get update
apt-get install nano
nano /var/www/.htaccess
E esse é apenas um exemplo do poder do docker exec . Também podemos nos conectar ao contêiner MySQL para consultar o banco de dados.
Podemos até personalizar nosso arquivo docker-compose.yml
para montar pastas locais em nossos contêineres.
Portanto, além de ter uma experiência de configuração muito rápida, ainda temos a capacidade de mergulhar em um nível baixo, se quisermos.
A próxima etapa é, obviamente, hospedar esta instalação do WordPress Docker na nuvem. Mas isso é assunto para uma futura postagem no blog.