Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprenda Gerenciando Aplicações Multi-Contêiner | Trabalhando com Docker Compose
Noções Básicas de Docker

Gerenciando Aplicações Multi-Contêiner

Deslize para mostrar o menu

Ao construir aplicações modernas, frequentemente é necessário executar vários serviços juntos—como servidores web, bancos de dados e caches—que precisam se comunicar e funcionar como um sistema unificado. O Docker Compose simplifica esse processo ao permitir que você defina todos os seus serviços, suas dependências e como eles interagem, tudo em um único arquivo docker-compose.yml.

Definição de dependências e links de serviços no docker-compose.yml

No seu docker-compose.yml, cada serviço pode declarar dependências e especificar como se conecta a outros. A chave depends_on permite definir a ordem de inicialização dos serviços, garantindo, por exemplo, que um banco de dados esteja em execução antes que sua aplicação tente se conectar. Além disso, o Compose cria automaticamente uma rede padrão para seu projeto, facilitando a descoberta e comunicação entre os serviços pelo nome do serviço.

Suponha que você tenha uma aplicação web que depende de um banco de dados. No seu arquivo Compose, defina os serviços assim:

version: "3.8"
services:
  app:
    build: .
    depends_on:
      - db
  db:
    image: postgres:15

Aqui:

  • O serviço app depende de db;
  • O Compose iniciará o container do banco de dados antes da aplicação;
  • Ambos os serviços podem se referenciar usando os nomes dos serviços como hostnames dentro da rede do Compose.

Estratégias para escalar serviços e atualizar configurações

O Docker Compose facilita a escalabilidade horizontal dos serviços. Se sua aplicação precisar lidar com mais tráfego, é possível aumentar o número de containers para um serviço usando o parâmetro --scale ao executar docker compose up.

Para executar três instâncias do serviço da sua aplicação, utilize:

docker compose up --scale app=3
  • Este comando inicia três containers para o serviço app;
  • Todos os containers estão conectados à mesma rede e podem compartilhar recursos, como um banco de dados;
  • Ao escalar, certifique-se de que seus serviços sejam stateless ou possam lidar corretamente com múltiplas instâncias.

Atualizar configurações em um ambiente Compose é simples:

  • Modifique seu docker-compose.yml—por exemplo, altere variáveis de ambiente, limites de recursos ou imagens dos serviços;
  • Aplique as alterações com o seguinte comando:
docker compose up -d
  • Este comando recria apenas os serviços cuja configuração foi alterada, minimizando o tempo de indisponibilidade.

Monitoramento e solução de problemas em aplicações multi-contêiner com Compose

Ao executar múltiplos containers, o monitoramento e a solução de problemas são essenciais. O Docker Compose oferece ferramentas para ajudar a observar a integridade e os logs dos seus serviços. Você pode visualizar a saída de todos os containers em tempo real com:

docker compose logs -f

Esse comando transmite os logs de todos os serviços, facilitando a identificação de erros ou problemas à medida que ocorrem. Se precisar focar em um serviço específico, especifique o nome dele:

docker compose logs db

Para solução de problemas, é possível acessar um container em execução usando:

docker compose exec app sh

Esse comando fornece um shell dentro do container app, permitindo inspecionar arquivos, executar comandos de diagnóstico ou verificar variáveis de ambiente. O monitoramento do uso de recursos e da integridade dos containers também pode ser feito com ferramentas padrão do Docker, como docker stats.

1. Qual chave em um arquivo docker-compose.yml garante que um serviço seja iniciado antes de outro?

2. Como escalar um serviço chamado worker para cinco instâncias usando o Docker Compose?

3. Qual comando você usaria para visualizar logs em tempo real de todos os serviços em execução em uma aplicação Compose?

question mark

Qual chave em um arquivo docker-compose.yml garante que um serviço seja iniciado antes de outro?

Selecione a resposta correta

question mark

Como escalar um serviço chamado worker para cinco instâncias usando o Docker Compose?

Selecione a resposta correta

question mark

Qual comando você usaria para visualizar logs em tempo real de todos os serviços em execução em uma aplicação Compose?

Selecione a resposta correta

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 3. Capítulo 3

Pergunte à IA

expand

Pergunte à IA

ChatGPT

Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo

Seção 3. Capítulo 3
some-alt