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
Problema
O arquivo
dev/docker-compose.ymlutiliza o formatoversion: '2'do Docker Compose,que está obsoleto e não suporta funcionalidades modernas como healthchecks com conditions
no
depends_on. Isso causa:links:(deprecado) em vez dedepends_oncom conditionsSolução
Migrar o
dev/docker-compose.ymlpara o formato moderno:version: '2'links:pordepends_oncomcondition: service_healthyrestart: unless-stoppednos serviços que não tinham restart policyServiços e healthchecks
nc -z localhost 8100nc -z localhost 1025bash -c '</dev/tcp/localhost/11211'bash -c '</dev/tcp/localhost/${DATABASE_PORT}'curl -sf http://localhost:8983/solr/curl -sf http://localhost:8000/sei/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:
volumes_from:(funcionalidade exclusiva do formato v2, sem equivalente direto no v3)sednoinfra/Makefileque geram o docker-compose finalmemcachedcdque precisa ser corrigidoA migração do template de infra será tratada em um PR separado subsequente.
Validação
docker compose configvalida sem erros