DOCKER SERIES: Final … COMPOSE: Multicontainers

Ao longo desta série testemunhamos a execução de diversos containers através do comando específico chamado docker run. Além disso, também vimos que é totalmente plausível conectar dois ou mais containers em uma mesma rede, por meio do comando docker network. Bem, e agora? Que bom que perguntou, pois hoje veremos como converter nosso trabalho de “manual” para “automático“. Hã?! Como assim? Ao invés de executar vários comandos para subir containers e depois conectá-los entre si, a partir deste momento, toda essa coordenação será feita pelo próprio DOCKER via COMPOSE. Trata-se de um utilitário desenvolvido pela empresa para lidar com ambientes distribuídos em múltiplos containers. Nós iremos pegar aquele exemplo da aula passada, e transformá-lo em um script para ser lido pelo docker-compose. Mas, primeiro …

DOCKER COMPOSE : Como instalar

Caso você esteja no Windows ou Mac, tal aplicativo já vem embarcado no processo de instalação, e está pronto para uso imediato. Entretanto, no Linux as coisas são um pouco diferentes, e para isso você terá que instalá-lo manualmente. Não perca tempo, abra o terminal e execute o seguinte:

DOCKER_CONFIG=${DOCKER_CONFIG:-$HOME/.docker}
mkdir -p $DOCKER_CONFIG/cli-plugins
curl -SL https://github.com/docker/compose/releases/download/v2.16.0/docker-compose-linux-x86_64 -o $DOCKER_CONFIG/cli-plugins/docker-compose
chmod +x $DOCKER_CONFIG/cli-plugins/docker-compose
docker compose version

YAML : docker-compose.yml

Sim! Exatamente! A linguagem utilizada para escrever “scripts” para o DOCKER COMPOSE é o velho e conhecido YAML. Analogamente aos playbooks do ANSIBLE, aqui também seguimos uma estrutura e lógica para pautar o nosso script. Essas regrinhas são muito importantes para o êxito do objetivo final. Sem mais delongas, vamos lá então:

(Crie um novo arquivo chamado docker-compose.yml)

touch docker-compose.yml

(Abra-o no VIM e edite conforme o conteúdo abaixo)

version: "3.4"
services:
  mongodb:
    image: mongo:4.4.6
    container_name: meu-mongo
    networks:
      - compose-bridge
  alurabooks:
    image: aluradocker/alura-books:1.0
    container_name: minha-biblioteca
    networks:
      - compose-bridge
    ports:
      - 3000:3000
networks:
  compose-bridge:
    driver: bridge

(Retornar ao terminal e efetivamente executar o comando docker-compose)

Figura 01. /home/user
sudo docker-compose up
Figura 02. docker-compose up

(Acessar via navegador de internet)

http://localhost:3000

(Semear o banco de dados)

http://localhost:3000/seed

(Atualizar a página novamente)

Figura 03. localhost:3000

DEPENDS_ON : Aperfeiçoando e complementando

Até então, mesmo que de forma automática, nossos containers estão subindo indefinidamente. Em outras palavras, fora de sequência. E isso às vezes não é tão bom ou recomendável, podendo ocasionar erros e problemas na aplicação. Para evitar maiores dores de cabeça, utilizaremos uma instrução chamada depends_on, que cria dependências entre os serviços listados. Por exemplo:

version: "3.4"
services:
  mongodb:
    image: mongo:4.4.6
    container_name: meu-mongo
    networks:
      - compose-bridge
  alurabooks:
    image: aluradocker/alura-books:1.0
    container_name: minha-biblioteca
    networks:
      - compose-bridge
    ports:
      - 3000:3000
    depends_on:
      - mongodb
networks:
  compose-bridge:
    driver: bridge
docker-compose up
Figura 04. depends_on

SALVA PARA ESTUDAR DEPOIS!!! 🤓

REFERÊNCIAS:

https://docs.docker.com/compose/install/linux/

https://docs.docker.com/compose/compose-file/

https://learn.microsoft.com/pt-br/dotnet/architecture/microservices/multi-container-microservice-net-applications/multi-container-applications-docker-compose

https://www.rockyourcode.com/how-to-install-docker-compose-v2-on-linux-2021/

Deixe uma resposta

Este site utiliza o Akismet para reduzir spam. Saiba como seus dados em comentários são processados.