https://github.com/renatoelho/healthcheck
Os Health Checks no Docker são fundamentais para garantir que sua aplicação esteja realmente funcionando dentro do contêiner. Muitas vezes, o fato de um contêiner estar ativo não significa que a aplicação está saudável.
https://github.com/renatoelho/healthcheck
docker fastapi healthcheck python
Last synced: about 2 months ago
JSON representation
Os Health Checks no Docker são fundamentais para garantir que sua aplicação esteja realmente funcionando dentro do contêiner. Muitas vezes, o fato de um contêiner estar ativo não significa que a aplicação está saudável.
- Host: GitHub
- URL: https://github.com/renatoelho/healthcheck
- Owner: Renatoelho
- License: mit
- Created: 2025-01-25T07:43:28.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2025-03-01T07:40:19.000Z (over 1 year ago)
- Last Synced: 2025-06-21T07:42:56.061Z (about 1 year ago)
- Topics: docker, fastapi, healthcheck, python
- Language: Python
- Homepage: https://renato.tec.br
- Size: 385 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Evite Problemas! Configure Health Checks no Docker de Forma Simples
Os **Health Checks** no Docker são fundamentais para garantir que sua aplicação esteja realmente funcionando dentro do contêiner. Muitas vezes, o fato de um contêiner estar ativo **não significa** que a aplicação está saudável. Para evitar problemas e melhorar o monitoramento, podemos configurar **Health Checks** no Docker Compose, permitindo que o próprio Docker verifique periodicamente o status da aplicação.
Neste guia, você aprenderá como implementar Health Checks de maneira simples utilizando **FastAPI** e **Docker Compose**, garantindo que seus serviços estejam sempre monitorados e prontos para uso.
## Apresentação em Vídeo
 
### Requisitos
+ 
+ 
+ 
+ 
## O que são Health Checks?
O **Health Check** é um mecanismo que permite ao Docker verificar periodicamente se um contêiner está funcionando corretamente. Ele é configurado dentro do **Docker Compose** e pode executar comandos para testar se a aplicação está respondendo de maneira adequada.
📌 **Exemplo de Health Check:**
- Verificar se uma API responde com **status 200**.
- Checar se um banco de dados está acessível.
- Monitorar serviços internos essenciais da aplicação.
## Implementando um Health Check no Docker
### Criando um Endpoint de Verificação
Primeiramente, vamos criar uma API utilizando **FastAPI** e adicionar um endpoint chamado `/health`, que responderá **200 OK** quando tudo estiver funcionando.
```python
from fastapi import FastAPI
from fastapi.responses import JSONResponse
app = FastAPI()
@app.get("/", status_code=200)
def get_example():
return {"mensagem": "É um JSON de exemplo..."}
@app.get("/health", status_code=200)
def health_check():
return {"status": "healthy"}
```
Esse endpoint será utilizado pelo Docker para verificar se a aplicação está ativa.
### Configurando o Health Check no Docker Compose
Agora, adicionamos o **Health Check** ao nosso `docker-compose.yml`:
```yaml
services:
api-teste:
container_name: api-teste
hostname: api-teste
image: python:3.12-slim
ports:
- "8000:8000"
volumes:
- ./src:/src
working_dir: /src
command: >
sh -c "apt update && apt install curl -y && pip install -U pip && pip install fastapi==0.115.5 uvicorn==0.32.0 && uvicorn app:app --host 0.0.0.0 --port 8000"
healthcheck:
test: curl -f http://localhost:8000/health
interval: 30s
timeout: 10s
retries: 3
start_period: 5s
```
📌 **Explicação dos parâmetros:**
- `test`: Executa um comando para verificar o endpoint `/health`.
- `interval`: Define o intervalo entre as verificações (30 segundos).
- `timeout`: Define o tempo limite para considerar a resposta válida (10 segundos).
- `retries`: Número de tentativas antes de marcar como **"unhealthy"**.
- `start_period`: Tempo de espera antes de iniciar as verificações (5 segundos).
## Testando o Health Check
Após configurar o **Docker Compose**, subimos a aplicação e verificamos seu status:
```bash
docker compose -p healthcheck -f docker-compose.yaml up -d
```
Para checar se o Health Check está funcionando:
```bash
docker ps
```
Caso o contêiner esteja saudável, o status será exibido como **healthy**. Se houver falha, ele será marcado como **unhealthy**, indicando que a aplicação não está respondendo corretamente.
## Melhorando a Visualização do Status
Podemos criar um **alias** para simplificar a exibição do status dos contêineres:
```bash
echo "alias dockerps='docker ps --format '{{.ID}}\t{{.Names}}\t{{.Status}}''" >> ~/.bashrc
source ~/.bashrc
```
Agora, basta rodar o comando `dockerps` para visualizar somente o **ID**, **Nome** e **Status** dos contêineres de forma organizada.
## Referências
HEALTHCHECK, **Docker Docs**. Disponível em: . Acesso em: 28 fev. 2025.
FastAPI, **Documentação Oficial**. Disponível em: . Acesso em: 28 fev. 2025.