Docker Compose – Ou como criar aplicações multi-containers no Docker

Logotipo do Docker, que será usado em parceria com o Docker ComposeNo extenso post que fiz sobre o Docker, falei muito sobre o que a plataforma é apresentei alguns exemplos no qual ela se mostra bastante útil, mostrando o porque que ela é interessante especialmente para aplicativos já planejados para serem totalmente distribuídos. Entretanto, essa última parte, como você pode imaginar, exige um setup maior, pois você precisa configurar containers para cada aplicação e conectar tudo de forma que um container possa se comunicar com o outro, o que é bem complicado de administrar quando você precisa criar um determinado ambiente no Docker com determinada frequência (para uso por desenvolvedores, por exemplo). Por causa desse probleminha, hoje eu vou falar um pouco sobre o Docker Compose, uma ferramenta esperta que tem como objetivo facilitar essa configuração e permitir que ela seja reproduzível em qualquer ambiente no qual o Docker esteja instalado (ou que tenha acesso ao Docker, de alguma forma).

O Docker Compose, originalmente chamado de fig, foi criado com o propósito de orquestrar a criação e administração de um conjunto de containers a partir do uso de um simples arquivo de configuração em formato YAML. Esse simples arquivo basicamente define todos os containers que serão usados por um projeto, suas conexões entre si, volumes usados (para poder armazenar dados de forma persistente), e demais configurações que você pode passar para o Docker (que são muitas!).

Com esse arquivo de configuração em mãos, basta um simples comando (que por curiosidade, é similar ao usado pelo Vagrant) na mesma pasta no qual o arquivo está localizado para que o Docker Compose comece a trabalhar: Em instantes, ele cria containers ou faz download de imagens correspondentes se necessário e também cria (ou apenas inicia, o que acredito simplificar o processo a ponto de torná-lo pouco mais rápido, inclusive) os containers especificados no arquivo, de forma bastante automatizada e segura, e novamente: Com apenas um simples comando.

Bom, dada essa introdução descrevendo do que se trata o software de forma bem básica, acho que podemos partir para o tutorial, certo? Partiu! 😀

Tutorial básico de Docker Compose

1) Para começar a brincar com o Docker Compose, você obviamente precisa ter o Docker instalado. Caso você não conheça o Docker, recomendo dar uma lida no psot que escrevi descrevendo a plataforma com um tutorial básico de uso. Caso já conheça a plataforma, e queira apenas instalá-la em seu computador, siga as instruções encontradas nessa página (mas lembre-se de que, para a instalação, é necessário uma máquina de x86-64, pois é a única arquitetura suportada pelo Docker)

2) Com o Docker instalado, baixe e instale o Docker Compose.

3) Em uma pasta vazia chamada "tutorial-docker-compose", experimente criar um arquivo chamado "docker-compose.yml" com o seguinte conteúdo:

Note que o arquivo define algumas coisas bem básicas:

  • Dois containers, definidos na linha 1 e na linha 12, um chamado db e o outro chamado wordpress;
  • Especifica para fazer o download de duas imagens, nas linhas 2 e 13, sendo uma imagem chamada mysql e outra chamada wordpress;
  • Define que ambos os containers devem ser reiniciados sempre que houver alguma falha, nas linhas 3 e 14;
  • Define que a porta 3306 do container db deve ser exposta internamente, nas linhas 4 e 5;
  • Define algumas váriaveis de environment relacionadas à imagem mysql, nas linhas 6 à 10;
  • Define que o container wordpress deve se conectar com o container db dando-o o nome de mysql internamente, nas linhas 15 e 16;
  • Define que a porta 8080 do computador local deve redirecionar para a porta 80 do container wordpress, nas linhas 17 e 18;
  • Define algumas váriaveis de environment relacionadas à imagem wordpress, nas linhas 19 à 22;

4) Feito isso, basta agora, na pasta no qual o docker-compose.yml,  executar o comando docker-compose up -d para fazer o Docker Compose criar e executar os containers definidos no arquivo docker-compose.yml. Veja:

5) Com os containers criados, execute o comando docker-compose logs para ver o que eles estão fazendo, veja:

6) Quando o Apache for iniciado, acesse o endereço http://127.0.0.1:8080/ e veja a tela de instalação do WordPress. Pronto, daí em diante, o WordPress está rodando num container do Docker, conectado com outro container do WordPress, e caso você tenha outros containers executando eles provavelmente nem terão ideia disso. =)

Com isso, já dá para ter uma clara ideia do que o Docker Compose é capaz. Como você pode perceber, aliás, com um simples docker-compose.yml você consegue simplesmente recriar todo um ambiente de containers com um único comando, sendo ideal portanto para criação de ambientes de desenvolvimento (assim como o Vagrant o é para máquinas virtuais) e até para uso em servidores.

Caso você queira explorar mais sobre o Docker Compose, sugiro dar uma olhada na documentação, que é bem completa e mostra tudo o que o Docker Compose  é capaz de fazer.

Por fim, segue os links relacionados à ferramenta:

Gostou do conteúdo desse post? Apoie o blog contribuindo a partir de R$1/mês através da nossa página no Apoia.se! Isso me ajudará a manter o blog no ar, além de trazer mais coisas legais para vocês! Obrigado desde já! 😀