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 application origins to ports 3000, 3333, 4000, 8000, and 9000. The separate static documentation service listens on port 80 and can have its own HTTPS origin. 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.
Application servers call Delivery REST; external agents use Management MCP for changes and Context MCP for retrieval with separate credentials. The documentation service exposes static Markdown and agent indexes, not a model runtime or Management API.
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.