Docker Compose: Healthcheck que Evita Falsos Online

8 min 1 Docker
Resumir com:
ChatGPT Claude Gemini Perplexity Grok
Compartilhar:
WhatsApp LinkedIn X

Se este conteúdo faz parte do seu projeto

Escolha a VPS pelo uso, não pelo excesso

Escolha pelo uso: Basic para projetos pequenos, Performance para produção com múltiplos serviços e Ultra para cargas maiores.

PlanoRecursosMensalPerfil
Basic4 vCPU · 4 GB RAM · 100 GB NVMeR$ 99Site e projeto pequeno
Performance6 vCPU · 12 GB RAM · 150 GB NVMeR$ 169Produção e múltiplos serviços
Ultra8 vCPU · 20 GB RAM · 200 GB NVMeR$ 269Cargas maiores e mais margem
Prova técnica: no benchmark publicado da VM Performance, medimos 1.855 ev/s em 6 threads, 288 ev/s em 1 thread, 11.858 MiB/s de memória e 338 MB/s de escrita sequencial, com teste direto na VM e sem Cloudflare.
Escolher Performance Falar no WhatsApp

Valores mensais exibidos para referência. A renovação segue o ciclo e o preço vigente informado no checkout antes da contratação.

Experiência prática

O que foi testado na prática

Os dados abaixo representam o teste ou material fornecido para este artigo. Quando não houver evidência própria, esta seção não é exibida.

Ambiente
Ubuntu 24.04 LTS em ambiente de teste; versões e recursos devem ser registrados antes da execução.
Limitação
Resultado depende de versões, rede, carga, credenciais e dados do ambiente; não publicar o procedimento como benchmark próprio.

Resposta rápida: Configure healthchecks no Docker Compose para diferenciar container iniciado de serviço realmente pronto para receber tráfego. Um container com status Up pode estar sem banco, sem migração ou sem endpoint funcional. O healthcheck deve medir a condição que interessa ao usuário.

Este guia foi escrito para quem precisa tomar uma decisão operacional, não apenas conhecer o nome da ferramenta. O objetivo é mostrar o caminho, os pontos de verificação e as limitações que permanecem depois da configuração.

O que você vai resolver

O ganho de informação está em combinar healthcheck, depends_on condition e um teste externo; isso reduz o falso positivo, mas não substitui monitoramento. Antes de começar, separe um ambiente de teste, uma janela de mudança e um plano de retorno. Não cole credenciais reais nos comandos deste artigo.

Pré-requisitos e dimensionamento

Para um serviço pequeno e isolado, o VPS Brasil Básico oferece 4 GB de RAM, 4 vCPUs e 100 GB NVMe por R$99/mês. O cenário deste artigo recomenda o VPS Brasil Performance, com 12 GB de RAM e 6 vCPUs por R$169/mês, porque considera um container com status up pode estar sem banco, sem migração ou sem endpoint funcional. o healthcheck deve medir a condição que interessa ao usuário.

Esses números são especificações de catálogo, não uma promessa de desempenho universal. A carga real depende da aplicação, do banco, do número de processos, do tamanho dos dados e do padrão de tráfego.

Procedimento passo a passo

Comece registrando o estado atual: versão do sistema, portas abertas, processos, espaço em disco e última cópia válida. Faça uma alteração por vez. Se perder o acesso, interrompa e use o console ou o procedimento de recuperação do provedor.

Compose com banco e aplicação

services:
  db:
    image: postgres:16
    environment:
      POSTGRES_PASSWORD: change-me
      POSTGRES_DB: app
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U postgres -d app"]
      interval: 10s
      timeout: 5s
      retries: 5

  app:
    image: ghcr.io/exemplo/app:stable
    depends_on:
      db:
        condition: service_healthy
    healthcheck:
      test: ["CMD-SHELL", "wget -qO- http://127.0.0.1:8080/health || exit 1"]
      interval: 15s
      timeout: 5s
      retries: 4

Suba e observe

docker compose up -d
docker compose ps
docker compose logs --tail=80 app
docker inspect --format '{{json .State.Health}}' $(docker compose ps -q app)

Teste de fora do host

curl -fsS https://app.exemplo.com/health
curl -sS -o /dev/null -w 'status=%{http_code} tempo=%{time_total}s\n' https://app.exemplo.com/health

Como validar sem autoengano

Uma validação útil cruza pelo menos três sinais: o serviço está ativo, a rota correta responde e o resultado é coerente com o que o usuário espera. Registre horário, comando, status HTTP quando existir, duração e trecho relevante do log. Não confunda ausência de erro no terminal com funcionamento completo.

SinalO que comprovaO que não comprova
Upprocesso do container inicioudependências prontas
Healthyteste definido passoutoda a jornada do usuário
HTTP externorota pública respondepersistência e filas

Decisões que mudam o resultado

Separe mudança de diagnóstico

Antes de alterar healthcheck no Docker Compose, capture o estado atual e escreva o que você espera observar. Essa pequena disciplina evita mudar a rede, o serviço e o firewall ao mesmo tempo. Se algo falhar, você consegue voltar ao último estado conhecido e testar uma hipótese por vez, em vez de acumular diferenças impossíveis de explicar.

Use o menor privilégio possível

O procedimento pode exigir acesso administrativo, mas a aplicação não deve herdar esse mesmo nível. Separe usuário do sistema, credencial da ferramenta e permissão de leitura ou escrita. Se existir uma chave, trate-a como segredo rotacionável. Uma configuração que funciona apenas com permissões amplas está incompleta, mesmo que o primeiro teste passe.

Meça a condição que importa

O indicador escolhido precisa representar o objetivo do leitor. Em uma rota pública, confirme o caminho completo; em uma fila, acompanhe atraso e reprocessamento; em um banco, valide leitura e restauração; em uma configuração de rede, confirme rota e DNS. O comando isolado ajuda no diagnóstico, mas não substitui a verificação do fluxo que será usado.

Prepare a operação para a falha

Defina o que acontece se a dependência ficar indisponível, se a máquina reiniciar ou se a configuração tiver de ser revertida. Documente arquivos alterados, portas, volumes e comandos de retorno. Uma janela de manutenção pequena é mais segura quando o rollback está escrito e não depende de memória sob pressão.

Registre o contexto da medição

Guarde data, versão, recursos do host, origem do teste, destino e resultado. Isso torna a comparação futura possível e evita transformar uma observação pontual em promessa de desempenho. Para healthcheck no Docker Compose, repita o teste depois de uma mudança relevante e publique apenas números que possam ser conferidos no ambiente que os produziu.

Uma boa documentação também reduz o tempo de atendimento. Anote o arquivo alterado, a porta envolvida, o comando usado, a resposta esperada e o sinal que confirmou a mudança. Quando outra pessoa assumir a operação, ela poderá repetir o teste sem depender de uma explicação oral. Se o resultado for diferente, compare primeiro versão, carga, rede e permissões; só depois considere uma alteração adicional. Esse registro é parte da solução, não burocracia posterior.

Limitações, segurança e rollback

Um container com status Up pode estar sem banco, sem migração ou sem endpoint funcional. O healthcheck deve medir a condição que interessa ao usuário. Também mantenha firewall com a menor exposição possível, permissões mínimas e backup antes de alterar dados. Se a mudança falhar, restaure o arquivo anterior, recarregue somente após validar a sintaxe e confira a conectividade a partir de uma segunda origem.

Este artigo não afirma que um comando foi executado na infraestrutura do leitor nem que a configuração garante disponibilidade. O ambiente, a versão do software e as políticas de rede mudam o resultado; documente essas variáveis.

Perguntas relacionadas

O que é healthcheck no Docker Compose?

Configure healthchecks no Docker Compose para diferenciar container iniciado de serviço realmente pronto para receber tráfego.

Qual é o erro mais comum neste cenário?

Um container com status Up pode estar sem banco, sem migração ou sem endpoint funcional. O healthcheck deve medir a condição que interessa ao usuário. Antes de alterar produção, reproduza o problema em ambiente controlado e registre o resultado.

Preciso de uma VPS para aplicar o procedimento?

Você pode validar partes do roteiro localmente, mas uma operação pública precisa de um ambiente com recursos, backup, firewall e acesso administrativo compatíveis com o serviço.

Como sei que a configuração funcionou?

Use os comandos de verificação do artigo e registre status, tempo de resposta, logs e consumo. Um processo iniciado não é prova de uma jornada saudável.

Posso copiar os comandos diretamente?

Os blocos são modelos. Substitua domínios, IPs, usuários, caminhos e segredos. Revise cada linha e faça backup antes de aplicar em produção.

O que deve ficar fora dos logs?

Senhas, tokens, chaves privadas, cookies, payloads pessoais e strings de conexão. Registre identificadores técnicos não sensíveis e aplique retenção.

Quando o plano Básico deixa de ser suficiente?

Quando a carga combina vários serviços, filas, banco, workers ou picos de tráfego. Nesse caso, dimensione pelo conjunto e considere o Performance ou o Ultra.

Qual é o próximo passo recomendado?

Faça o checklist deste artigo em staging, compare o resultado com o requisito da sua operação e, se precisar publicar a carga, avalie o VPS Brasil Performance a R$169/mês.

Próximo passo

Se o procedimento atende uma carga pequena, comece com o VPS Brasil Básico. Para o cenário central deste guia, a recomendação é o VPS Brasil Performance por R$169/mês, com 12 GB de RAM e 6 vCPUs. Escolher o VPS Brasil Performance e revisar o checklist antes do corte.

Perguntas Frequentes

Configure healthchecks no Docker Compose para diferenciar container iniciado de serviço realmente pronto para receber tráfego.

Um container com status Up pode estar sem banco, sem migração ou sem endpoint funcional. O healthcheck deve medir a condição que interessa ao usuário. Antes de alterar produção, reproduza o problema em ambiente controlado e registre o resultado.

Você pode validar partes do roteiro localmente, mas uma operação pública precisa de um ambiente com recursos, backup, firewall e acesso administrativo compatíveis com o serviço.

Use os comandos de verificação do artigo e registre status, tempo de resposta, logs e consumo. Um processo iniciado não é prova de uma jornada saudável.

Os blocos são modelos. Substitua domínios, IPs, usuários, caminhos e segredos. Revise cada linha e faça backup antes de aplicar em produção.

Senhas, tokens, chaves privadas, cookies, payloads pessoais e strings de conexão. Registre identificadores técnicos não sensíveis e aplique retenção.

Quando a carga combina vários serviços, filas, banco, workers ou picos de tráfego. Nesse caso, dimensione pelo conjunto e considere o Performance ou o Ultra.

Faça o checklist deste artigo em staging, compare o resultado com o requisito da sua operação e, se precisar publicar a carga, avalie o VPS Brasil Performance a R$169/mês.

Comentários (0)

Ainda não há comentários. Seja o primeiro!