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:
HEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 \
CMD curl --fail http://localhost:80 || exit 1Aqui 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, ocurlfaz 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:
version: "3.8"
services:
web:
image: myapp
ports:
- "80:80"
healthcheck:
test: ["CMD", "curl", "--fail", "http://localhost:80"]
interval: 30s
timeout: 10s
retries: 3
start_period: 5sNo 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