Skip to content

Migrar Docker Compose para formato moderno com healthchecks #155

@rafaelfariasbsb

Description

@rafaelfariasbsb

Problema

O arquivo dev/docker-compose.yml utiliza o formato version: '2' do Docker Compose,
que está obsoleto e não suporta funcionalidades modernas como healthchecks com conditions
no depends_on. Isso causa:

  • Nenhum monitoramento de saúde dos containers
  • Uso de links: (deprecado) em vez de depends_on com conditions
  • Containers marcados como "up" mesmo quando o serviço interno ainda não está pronto
  • Ordem de inicialização não garantida (httpd pode iniciar antes do banco estar pronto)
  • Warnings no Docker Compose moderno

Solução

Migrar o dev/docker-compose.yml para o formato moderno:

  • Remover declaração version: '2'
  • Adicionar healthchecks específicos para cada serviço (nc, bash /dev/tcp, curl)
  • Substituir links: por depends_on com condition: service_healthy
  • Adicionar restart: unless-stopped nos serviços que não tinham restart policy

Serviços e healthchecks

Serviço Método start_period
jod nc -z localhost 8100 30s
smtp nc -z localhost 1025 10s
memcached bash -c '</dev/tcp/localhost/11211' 10s
database bash -c '</dev/tcp/localhost/${DATABASE_PORT}' 60s
solr curl -sf http://localhost:8983/solr/ 30s
httpd curl -sf http://localhost:8000/sei/ 120s

Escopo

Este PR cobre apenas o ambiente de desenvolvimento (dev/docker-compose.yml).

O template de infraestrutura/produção (infra/orquestrators/docker-compose/docker-compose-template.yml)
também necessita de migração, porém é significativamente mais complexo devido a:

  • Uso de volumes_from: (funcionalidade exclusiva do formato v2, sem equivalente direto no v3)
  • ~55 comandos sed no infra/Makefile que geram o docker-compose final
  • 13+ serviços com tags de comentário para ativação condicional
  • Typo memcachedcd que precisa ser corrigido

A migração do template de infra será tratada em um PR separado subsequente.

Validação

  • docker compose config valida sem erros
  • Todos os 6 containers atingem status "healthy"
  • Página de login do SEI acessível em http://localhost:8000/sei
  • Testado com MySQL como banco de dados

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions