ANÚNCIO

~/questoes/devops

Qual é uma boa prática ao configurar recursos em Docker Compose?

Responda, confira o feedback e use o resultado para orientar sua revisão.
Aula de referência Aprenda Docker Compose em 15 minutos | Tutorial Docker Compose
Para fixar

Definindo Limites de Recursos em Docker Compose

Conceito central

Docker Compose permite configurar recursos como memória e CPU para cada serviço, evitando que um container monopolize toda a máquina. Essa prática é essencial para ambientes estáveis e previsíveis, especialmente quando múltiplos serviços rodam juntos.

Por que essa resposta faz sentido

Definir limites de recursos previne que um serviço consume toda a memória disponível e deixe outros serviços sem recursos. No docker-compose.yml, você especifica limits e reservations para garantir que cada container respeite seu espaço alocado.

Armadilhas comuns

  • Achar que não precisa definir limites porque está usando Docker localmente; limites são importantes em qualquer ambiente
  • Confundir 'limits' (máximo que pode usar) com 'reservations' (quantidade garantida); ambos são úteis em contextos diferentes
  • Definir limites muito baixos e fazer a aplicação quebrar; é necessário testar e ajustar conforme a necessidade real

Entenda as alternativas

A

Definir limites de recursos (memoria, cpu) no arquivo docker-compose.yml é uma boa prática fundamental. Isso protege a máquina host e outros containers de ficarem sem recursos quando um serviço mau comportado consome tudo.

B

Ignorar variáveis de ambiente em produção é uma péssima prática. Variáveis de ambiente são essenciais para configurar senhas, URLs e chaves de API sem incluir dados sensíveis no código.

C

Configurar a mesma quantidade de memória para todas as aplicações é ineficiente. Um banco de dados precisa de muito mais memória que um serviço de API leve. Cada serviço deve ter recursos adequados à sua função.

D

Usar caminhos absolutos prejudica a portabilidade. O docker-compose.yml deve funcionar em diferentes máquinas e sistemas operacionais. Caminhos relativos e volumes nomeados são muito mais portáveis e robustos.

Dica prática: No seu docker-compose.yml, adicione um bloco 'deploy.resources.limits' em cada serviço. Exemplo: memory: '512M' e cpus: '0.5'. Comece com estimativas conservadoras e aumente gradualmente conforme observar o comportamento real em produção.

Revise pensando: Por que definir limites de recursos é mais importante quando você tem vários serviços rodando juntos no Docker Compose?