{"id":26292516,"url":"https://github.com/renatoelho/healthcheck","last_synced_at":"2026-05-07T18:14:26.585Z","repository":{"id":274146809,"uuid":"922058149","full_name":"Renatoelho/healthcheck","owner":"Renatoelho","description":"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.","archived":false,"fork":false,"pushed_at":"2025-03-01T07:40:19.000Z","size":394,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-06-21T07:42:56.061Z","etag":null,"topics":["docker","fastapi","healthcheck","python"],"latest_commit_sha":null,"homepage":"https://renato.tec.br","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Renatoelho.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-01-25T07:43:28.000Z","updated_at":"2025-03-15T22:04:43.000Z","dependencies_parsed_at":null,"dependency_job_id":"bb3ddbcd-5510-492a-971f-8068262bda88","html_url":"https://github.com/Renatoelho/healthcheck","commit_stats":null,"previous_names":["renatoelho/healthcheck"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Renatoelho/healthcheck","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Renatoelho%2Fhealthcheck","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Renatoelho%2Fhealthcheck/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Renatoelho%2Fhealthcheck/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Renatoelho%2Fhealthcheck/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Renatoelho","download_url":"https://codeload.github.com/Renatoelho/healthcheck/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Renatoelho%2Fhealthcheck/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32749832,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-07T02:14:30.463Z","status":"ssl_error","status_checked_at":"2026-05-07T02:14:29.405Z","response_time":62,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["docker","fastapi","healthcheck","python"],"created_at":"2025-03-15T01:35:58.463Z","updated_at":"2026-05-07T18:14:26.558Z","avatar_url":"https://github.com/Renatoelho.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Evite Problemas! Configure Health Checks no Docker de Forma Simples\n\nOs **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.\n\nNeste 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.\n\n## Apresentação em Vídeo\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://youtu.be/X6Nerb-3_R0\" target=\"_blank\"\u003e\u003cimg src=\"imagens/thumbnail/thumbnail-health-check-docker-github-01.png\" alt=\"Vídeo de apresentação\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n![YouTube Video Views](https://img.shields.io/youtube/views/X6Nerb-3_R0) ![YouTube Video Likes](https://img.shields.io/youtube/likes/X6Nerb-3_R0)\n\n### Requisitos\n\n+ ![Docker](https://img.shields.io/badge/Docker-27.4.1-E3E3E3)\n+ ![Docker-compose](https://img.shields.io/badge/Docker--compose-1.25.0-E3E3E3)\n+ ![Git](https://img.shields.io/badge/Git-2.25.1%2B-E3E3E3)\n+ ![Ubuntu](https://img.shields.io/badge/Ubuntu-22.04%2B-E3E3E3)\n\n## O que são Health Checks?\n\nO **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.\n\n📌 **Exemplo de Health Check:**\n- Verificar se uma API responde com **status 200**.\n- Checar se um banco de dados está acessível.\n- Monitorar serviços internos essenciais da aplicação.\n\n## Implementando um Health Check no Docker\n\n### Criando um Endpoint de Verificação\n\nPrimeiramente, vamos criar uma API utilizando **FastAPI** e adicionar um endpoint chamado `/health`, que responderá **200 OK** quando tudo estiver funcionando.\n\n```python\nfrom fastapi import FastAPI\nfrom fastapi.responses import JSONResponse\n\napp = FastAPI()\n\n@app.get(\"/\", status_code=200)\ndef get_example():\n    return {\"mensagem\": \"É um JSON de exemplo...\"}\n\n@app.get(\"/health\", status_code=200)\ndef health_check():\n    return {\"status\": \"healthy\"}\n```\n\nEsse endpoint será utilizado pelo Docker para verificar se a aplicação está ativa.\n\n### Configurando o Health Check no Docker Compose\n\nAgora, adicionamos o **Health Check** ao nosso `docker-compose.yml`:\n\n```yaml\nservices:\n  api-teste:\n    container_name: api-teste\n    hostname: api-teste\n    image: python:3.12-slim\n    ports:\n      - \"8000:8000\"\n    volumes:\n      - ./src:/src\n    working_dir: /src\n    command: \u003e\n      sh -c \"apt update \u0026\u0026 apt install curl -y \u0026\u0026 pip install -U pip \u0026\u0026 pip install fastapi==0.115.5 uvicorn==0.32.0 \u0026\u0026 uvicorn app:app --host 0.0.0.0 --port 8000\"\n    healthcheck:\n      test: curl -f http://localhost:8000/health\n      interval: 30s\n      timeout: 10s\n      retries: 3\n      start_period: 5s\n```\n\n📌 **Explicação dos parâmetros:**\n- `test`: Executa um comando para verificar o endpoint `/health`.\n- `interval`: Define o intervalo entre as verificações (30 segundos).\n- `timeout`: Define o tempo limite para considerar a resposta válida (10 segundos).\n- `retries`: Número de tentativas antes de marcar como **\"unhealthy\"**.\n- `start_period`: Tempo de espera antes de iniciar as verificações (5 segundos).\n\n## Testando o Health Check\n\nApós configurar o **Docker Compose**, subimos a aplicação e verificamos seu status:\n\n```bash\ndocker compose -p healthcheck -f docker-compose.yaml up -d\n```\n\nPara checar se o Health Check está funcionando:\n\n```bash\ndocker ps\n```\n\nCaso 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.\n\n## Melhorando a Visualização do Status\n\nPodemos criar um **alias** para simplificar a exibição do status dos contêineres:\n\n```bash\necho \"alias dockerps='docker ps --format '{{.ID}}\\t{{.Names}}\\t{{.Status}}''\" \u003e\u003e ~/.bashrc\n\nsource ~/.bashrc\n```\n\nAgora, basta rodar o comando `dockerps` para visualizar somente o **ID**, **Nome** e **Status** dos contêineres de forma organizada.\n\n## Referências\n\nHEALTHCHECK, **Docker Docs**. Disponível em: \u003chttps://docs.docker.com/engine/reference/builder/#healthcheck\u003e. Acesso em: 28 fev. 2025.\n\nFastAPI, **Documentação Oficial**. Disponível em: \u003chttps://fastapi.tiangolo.com/\u003e. Acesso em: 28 fev. 2025.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frenatoelho%2Fhealthcheck","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frenatoelho%2Fhealthcheck","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frenatoelho%2Fhealthcheck/lists"}