Fernando Jorge Mota

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

No 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:

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á! 😀