cd ..
DOCKER

HEALTHCHECK: ensinando o Docker a desconfiar do próprio container

HEALTHCHECK: ensinando o Docker a desconfiar do próprio container

Um container pode aparecer como Up em docker container ls e, mesmo assim, estar com a aplicação travada lá dentro — processo vivo, mas não respondendo a nada. Por padrão, o Docker só sabe dizer se o processo principal ainda está de pé, não se ele está de fato funcionando. É esse ponto cego que a instrução HEALTHCHECK resolve.

O que é o HEALTHCHECK

HEALTHCHECK é uma instrução que pode ser definida no Dockerfile (ou em um serviço do docker-compose.yml) para dizer ao Docker Engine como verificar se o processo dentro do container está de fato saudável — e não apenas rodando.

Resumindo em uma frase: “Ei Docker, a partir de agora, não confie apenas no fato de eu estar ligado. Teste-me.”

Um exemplo prático

HEALTHCHECK --timeout=2s CMD curl --fail localhost || exit 1

Vamos separar cada parte:

Onde o resultado aparece

O status do healthcheck fica visível direto na listagem de containers:

docker container ls

Um container saudável aparece como Up ... (healthy); um que está falhando, como Up ... (unhealthy). Logo depois de iniciar, ele pode aparecer como (health: starting), enquanto o Docker ainda não teve tempo de rodar a primeira verificação.

Para investigar o histórico das últimas checagens:

docker container inspect meu-nginx

As informações ficam na seção State.Health da saída, incluindo o status atual e o log das últimas tentativas.

Buildando e rodando

docker image build -t meu-nginx:2.0 .
docker container run -d -p 8080:80 --name meu-nginx meu-nginx:2.0

Conclusão

O HEALTHCHECK transforma “o container está rodando” em “o container está funcionando” — uma distinção que faz toda a diferença quando outra ferramenta (um orquestrador, um load balancer, o próprio docker-compose) precisa decidir se deve continuar mandando tráfego para aquele container ou substituí-lo.

Na próxima parte da série, tratamos de outro problema que aparece assim que um container é reiniciado: como fazer os dados sobreviverem a ele, com volumes.

Referências

O que achou?