Docker Compose
Anteriormente, aprendemos aspectos importantes sobre imagens, volumes, redes, etc. O problema é que a combinação desses conceitos em uma abordagem onde cada passo é executado manualmente é um processo sujeito a erro, já que cada comando deve ser inserido corretamente e as etapas devem ser executadas na ordem correta. Para evitar esses problemas é que serve o Docker Compose. O Docker Compose é uma ferramenta usada para escrever aplicaçãoes complexas e gerenciar os contêineres, as redes e os volumes que essa aplicação exigem para funcionar. Ele simplifica o processo de configuração e execução de aplicativos para que você não precise digitar comandos complexos que podem levar a erros de configuração. É usado para descrever aplicações de forma consistente e previsível usando um arquivo de composição (extensão .yml) que contém detalhes de todos os volumes, redes e contêiners que compõem um aplicativo e os relacionamentos entre eles. Docker Compose — Preparando nosso ambiente Se você chegou aqui pelos seguindo os “artigos” anteriores, vimos que na abordagem manual usada até o momento, tínhamos feito: Criamos uma rede chamada backend Criamos uma rede chamada frontend Criamos um volume de dados em MSQL e um contêiner MYSQL Criamos um contêiner da aplicação mvc1, mvc2, mvc3 com a definição do Dockerfile Criamos também um contêiner de balanceador de carga com o haproxy.cfg Testamos utilizar o navegador e o fluxograma da junção de todas as nossas tecnologias ficou assim: vamos limpar todas as nossas [imagens], [volumes], [redes] e [contêineres] criados em nosso ambiente. Vamos fazer todos os processos anteriores, só que dessa vez utilizando a tecnologia do Docker Compose. Docker Compose — Roteiro Básico Defnir o ambiente necessário para sua aplicação funcionar utilizando um Dockerfile Criar o arquivo de composição (.yml) definindo quais são os serviços essenciais para a sua aplicação e o relacionamento entre eles Processo o arquivo de composição executando o comando docker-compose para que seu ambiente seja criado e configurado. O Arquivo de composição (.yml ou yaml) O arquivo de composição é o ponto de partida na utilização do Docker Compose. Embora seja possível colocar o arquivo de composição em qualquer local do projeto, por convenção, ele é colocado na raiz do diretório do projeto. Isso facilita o acesso e a organização. YAML ou YML é um formato usado para cria arquivos de configuração de fácil leitura. Organizando os arquivos em seções e usa a identação com espaços para expressas a estrutura do arquivo. version: "3" volumes: produtosdata: networks: frontend: backend: version: Define a versão do Docker Compose que está sendo usada. volumes: Define volumes persistentes que podem ser usados pelos contêineres para armazenar dados de forma que, mesmo se o contêiner for removido, os dados não sejam perdidos. networks: Define redes personalizadas para que os contêineres possam se comunicar entre si. Caso não tenha ficado claro como funciona os pontos definidos, você pode ler individualmente para que fique mais claro. volumes, networks. Criand o arquivo de composição Docker-compose.yml Como já foi estruturado a base anteriormente nosso arquivo docker-compose.yml, vamos dar continuidade a sua estruturação. version: "3" volumes: produtosdata: networks: frontend: backend: Criação do contêiner a partir da imagem do MySQL Como vimos anteriormente, podemos criar a imagem do MySQL com o comando: docker container run -d --name mysql -v -produtosdata:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=numsey -e bind-address=0.0.0.0 mysql:5.7 Nós precisamos definir as mesmas instruções no arquivo de composição docker-compose.yml Definir a criação do contêiner do MySQL no Docker-Compose Agora surge uma nova seção chamada services, que descreve os serviços usados para criar contêineres.

Anteriormente, aprendemos aspectos importantes sobre imagens, volumes, redes, etc. O problema é que a combinação desses conceitos em uma abordagem onde cada passo é executado manualmente é um processo sujeito a erro, já que cada comando deve ser inserido corretamente e as etapas devem ser executadas na ordem correta. Para evitar esses problemas é que serve o Docker Compose.
O Docker Compose é uma ferramenta usada para escrever aplicaçãoes complexas e gerenciar os contêineres, as redes e os volumes que essa aplicação exigem para funcionar.
Ele simplifica o processo de configuração e execução de aplicativos para que você não precise digitar comandos complexos que podem levar a erros de configuração. É usado para descrever aplicações de forma consistente e previsível usando um arquivo de composição (extensão .yml) que contém detalhes de todos os volumes, redes e contêiners que compõem um aplicativo e os relacionamentos entre eles.
Docker Compose — Preparando nosso ambiente
Se você chegou aqui pelos seguindo os “artigos” anteriores, vimos que na abordagem manual usada até o momento, tínhamos feito:
- Criamos uma rede chamada
backend
- Criamos uma rede chamada
frontend
- Criamos um volume de dados em
MSQL
e um contêinerMYSQL
- Criamos um contêiner da aplicação
mvc1, mvc2, mvc3
com a definição do Dockerfile - Criamos também um contêiner de balanceador de carga com o
haproxy.cfg
Testamos utilizar o navegador e o fluxograma da junção de todas as nossas tecnologias ficou assim:
vamos limpar todas as nossas [imagens], [volumes], [redes] e [contêineres] criados em nosso ambiente. Vamos fazer todos os processos anteriores, só que dessa vez utilizando a tecnologia do Docker Compose.
Docker Compose — Roteiro Básico
- Defnir o ambiente necessário para sua aplicação funcionar utilizando um Dockerfile
- Criar o arquivo de composição (.yml) definindo quais são os serviços essenciais para a sua aplicação e o relacionamento entre eles
- Processo o arquivo de composição executando o comando
docker-compose
para que seu ambiente seja criado e configurado.
O Arquivo de composição (.yml ou yaml)
O arquivo de composição é o ponto de partida na utilização do Docker Compose. Embora seja possível colocar o arquivo de composição em qualquer local do projeto, por convenção, ele é colocado na raiz do diretório do projeto. Isso facilita o acesso e a organização.
YAML ou YML é um formato usado para cria arquivos de configuração de fácil leitura. Organizando os arquivos em seções e usa a identação com espaços para expressas a estrutura do arquivo.
version: "3"
volumes:
produtosdata:
networks:
frontend:
backend:
version
: Define a versão do Docker Compose que está sendo usada.
volumes
: Define volumes persistentes que podem ser usados pelos contêineres para armazenar dados de forma que, mesmo se o contêiner for removido, os dados não sejam perdidos.
networks
: Define redes personalizadas para que os contêineres possam se comunicar entre si.
Caso não tenha ficado claro como funciona os pontos definidos, você pode ler individualmente para que fique mais claro. volumes
, networks
.
Criand o arquivo de composição Docker-compose.yml
Como já foi estruturado a base anteriormente nosso arquivo docker-compose.yml
, vamos dar continuidade a sua estruturação.
version: "3"
volumes:
produtosdata:
networks:
frontend:
backend:
Criação do contêiner a partir da imagem do MySQL
Como vimos anteriormente, podemos criar a imagem do MySQL com o comando:
docker container run -d
--name mysql
-v -produtosdata:/var/lib/mysql
-e MYSQL_ROOT_PASSWORD=numsey
-e bind-address=0.0.0.0
mysql:5.7
Nós precisamos definir as mesmas instruções no arquivo de composição docker-compose.yml
Definir a criação do contêiner do MySQL no Docker-Compose
Agora surge uma nova seção chamada services
, que descreve os serviços usados para criar contêineres.