Docker container map — Nginx / App / Redis / Sentinel and their roles
Updated Jun 29, 2026 · 1 min read
A complete reference for every Docker container in the stack: their names, ports, responsibilities, and how they talk to each other.
Nginx containers
Service names: nginx-ha-1, nginx-ha-2 Port: 80 (HTTP), 443 (HTTPS) Role: Reverse proxy and load balancer. Receives all external traffic and forwards it to app containers. Reads the upstream config dynamically so it can add or remove app containers without restarting.
App containers
Service names: app-ha-1, app-ha-2 (Swarm replicas, scaled as needed) Port: 3000 (internal only, not exposed externally) Role: Runs the Next.js application. Each instance is identical and stateless. Nginx routes traffic across all healthy app containers. Docker Swarm can spin up additional replicas when load is high.
Redis containers
Container names: redis-master, redis-replica-1 (and optionally redis-replica-2) Ports: 6379 (internal only) Role: redis-master accepts all read and write operations. redis-replica-1 replicates from master asynchronously and acts as a hot standby. If master fails, Sentinel promotes a replica to master automatically.
Redis Sentinel containers
Container names: redis-sentinel-1, redis-sentinel-2, redis-sentinel-3 Port: 26379 (internal only) Role: Each Sentinel process independently monitors the Redis master. If a quorum (2 of 3) agrees the master is unreachable, they trigger a failover. The app connects to Sentinel rather than directly to Redis master, so it automatically follows the new master after a failover.
Docker network communication
All containers are attached to a shared Docker Swarm overlay network. Containers communicate with each other by service name (e.g. the app connects to Redis using the hostname redis-master:6379). No container ports are exposed to the internet except Nginx ports 80 and 443. This network isolation is a core security boundary.
Was this helpful?