Todos os containers compartilham uma única rede bridge: nexo_default.
A rede é criada pelo docker-compose.infra.yml e declarada como external no docker-compose.yml. Isso permite que o container da aplicação entre na mesma rede dos serviços de infraestrutura apesar de estarem em arquivos Compose separados.
# docker-compose.infra.yml — cria a redenetworks:app-network:name:nexo_default# docker-compose.yml — entra na rede existentenetworks:app-network:external:truename:nexo_default
Mapeamento de Portas
Portas expostas no host:
Serviço
Porta do Container
Porta do Host
Protocolo
nexo-app
3000
3000
HTTP
nexo-db
5432
5432
PostgreSQL
redis-master
6379
6379
Redis
sentinel-1
26379
26379
Redis Sentinel
nexo-queue
5672
5656
AMQP
nexo-queue
15672
15672
HTTP (UI de Gerenciamento)
nexo-storage
9000
9000
HTTP (API S3)
nexo-storage
9001
9001
HTTP (Console)
Sentinel-2 e sentinel-3 não expõem portas no host — são acessíveis apenas dentro da rede Docker.
Resolução DNS
Containers se comunicam usando o DNS embutido do Docker. Nomes de serviço resolvem para IPs de container dentro da rede nexo_default:
Hostname
Resolve para
nexo-db-1
Container PostgreSQL
nexo-redis-master
Redis master
nexo-redis-replica
Redis réplica
nexo-sentinel-1
Sentinel 1
nexo-sentinel-2
Sentinel 2
nexo-sentinel-3
Sentinel 3
nexo-mq-1
RabbitMQ
nexo-minio-1
MinIO
A aplicação usa container_name para resolução DNS, não o nome do serviço do Compose.
DNS da Aplicação
O container da aplicação tem DNS externo configurado:
Isso garante que a app consiga resolver hostnames externos (provedores OAuth, API do Resend, Axiom) mesmo que o resolver DNS do host esteja indisponível.
Strings de Conexão
Serviço
Conexão
Variável de Ambiente
PostgreSQL
postgresql://user:pass@nexo-db-1:5432/elo
DATABASE_URL
Redis (dev)
redis://localhost:6379
REDIS_URL
Redis (prod)
Descoberta via Sentinel nexo-sentinel-{1,2,3}:26379