Introdução
O recurso de healthcheck no Docker permite monitorar o status de um container para verificar se ele está funcionando corretamente. Ele define uma maneira de o Docker saber se o serviço dentro do container está ativo ou se precisa ser reiniciado. A configuração do healthcheck é adicionada no Dockerfile
ou no docker-compose.yml
.
No Dockerfile
Você pode configurar um HEALTHCHECK
no seu Dockerfile
usando a seguinte sintaxe:
Aqui estão as opções mais comuns:
--interval
: Define o tempo entre cada verificação de saúde (ex.: 30s).--timeout
: Define quanto tempo esperar por uma resposta antes de considerar que a verificação falhou.--start-period
: Tempo de espera antes da primeira verificação, para dar tempo ao serviço de iniciar.--retries
: Número de tentativas antes de considerar que o container está em mau estado.CMD
: O comando executado para verificar a saúde do container. No exemplo acima, ocurl
faz uma requisição HTTP para um serviço na porta 80, e a falha no comando indica que o serviço está inoperante.
No docker-compose.yml
Você também pode definir o healthcheck
dentro do arquivo docker-compose.yml
para containers específicos:
No docker-compose.yml
, as opções são semelhantes às usadas no Dockerfile
:
test
: O comando de teste que será executado.interval
: Define o tempo entre cada verificação.timeout
: Limite de tempo para a execução do teste.retries
: Quantas falhas são permitidas antes de o container ser considerado unhealthy.start_period
: Espera antes da primeira verificação.
Como monitorar
Depois que o healthcheck está configurado, você pode usar o comando docker inspect
para verificar o status de saúde do container:
O status pode ser:
healthy
: O container passou na verificação.unhealthy
: O container falhou no healthcheck.starting
: O container ainda está na fase de inicialização.
Essa configuração é essencial para garantir a robustez e a estabilidade dos serviços rodando em containers Docker.
Laboratório
Aplicação sendo executada no Docker Compose.
Arquivo compose.yaml:
Simulação de quebra da aplicação, onde ela não é encerrada mas deixa de funcionar como deveria.
Quebrar a aplicação:
Porém o container continua em execução:
A aplicação possui um endpoint para o HealthCheck:
Formas para implementar o HealthCheck:
Linha de Comando
Docker Compose
Dockerfile
Last updated