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
appdepende dedb; - 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?
Obrigado pelo seu feedback!
Pergunte à IA
Pergunte à IA
Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo