Architecture
See the supported services, dependencies, network paths, and persistent state.
The production Compose stack runs application roles, stateful dependencies, and two one-shot setup tasks on one bridge network.
Access
Host read access is required to inspect services, networks, and volumes.
docker compose -f docker-compose.prod.yaml ps -a
Service paths
The reverse proxy routes the five public origins to ports 3000, 3333, 4000, 8000, and 9000. Port 9001 is the optional object-storage console and should not be public by default. Postgres and Redis remain internal. Compose exposes container ports but does not publish host ports or provide TLS.
The Admin app’s Core and Delivery URLs are built into its image. Changing either URL requires an Admin rebuild, not only a restart.
Core API and Worker reach object storage through the public S3_PUBLIC_URL. Containers must therefore resolve and reach that HTTPS origin. The Image service reaches object storage on the internal network.
Persistent state
| Volume | State |
|---|---|
pgdata |
Authoritative CMS and authentication data |
minio_data |
Original files and generated image results |
redis_data |
Redis AOF, including queues, delayed jobs, and delivery cache |
Confirm all three named volumes exist before relying on container recreation as non-destructive. The Worker has no HTTP port or persistent volume of its own.
Postgres and object storage form the coordinated content recovery set. Redis is operational state, not only a disposable cache: omitting it from recovery can lose pending or delayed work. Pub/Sub invalidation messages are transient and are not stored in AOF. Queue replay after Redis loss has not been drilled by the project.