Docker Setup
The Curate-Me platform uses Docker Compose for both local development and production deployment. The production configuration is defined in docker-compose.production.yml at the repository root.
Services Overview
| Service | Image | Port | Description |
|---|---|---|---|
mongo | mongo:7 | 27017 (internal) | MongoDB database |
redis | redis:7-alpine | 6379 (internal) | Redis cache and message broker |
gateway | Custom | 8002 | AI Gateway — LLM proxy + governance chain |
backend-b2b | Custom | 8001 | B2B Dashboard API |
celery-worker | Custom | — | Background task worker |
celery-beat | Custom | — | Scheduled task scheduler |
dashboard | Custom | 3001 | Next.js ops console |
docs | Custom | 3003 | Nextra documentation site |
caddy | caddy:2-alpine | 80, 443 | Reverse proxy with auto HTTPS |
Building Images
Build all service images:
docker compose -f docker-compose.production.yml buildBuild a specific service:
docker compose -f docker-compose.production.yml build gateway
docker compose -f docker-compose.production.yml build dashboardForce a clean rebuild without cache:
docker compose -f docker-compose.production.yml build --no-cacheRunning Services
Start all services in detached mode:
docker compose -f docker-compose.production.yml up -dStart specific services:
docker compose -f docker-compose.production.yml up -d gateway backend-b2bStop all services:
docker compose -f docker-compose.production.yml downStop and remove volumes (destroys data):
docker compose -f docker-compose.production.yml down -vViewing Logs
Tail logs for all services:
docker compose -f docker-compose.production.yml logs -fTail logs for a specific service:
docker compose -f docker-compose.production.yml logs -f gateway
docker compose -f docker-compose.production.yml logs -f backend-b2b
docker compose -f docker-compose.production.yml logs -f caddyView the last 100 lines:
docker compose -f docker-compose.production.yml logs --tail=100 gatewayHealth Checks
All services include built-in Docker health checks. Check the health status of running containers:
docker compose -f docker-compose.production.yml psThe STATUS column shows healthy, unhealthy, or starting for each service.
Individual service health check endpoints:
| Service | Health Endpoint |
|---|---|
gateway | GET /health |
backend-b2b | GET /api/v1/health |
dashboard | GET /api/health |
mongo | mongosh --eval "db.runCommand('ping')" |
redis | redis-cli ping |
Resource Requirements
Recommended minimums for production:
| Resource | Minimum | Recommended |
|---|---|---|
| CPU | 2 cores | 4 cores |
| RAM | 4 GB | 8 GB |
| Disk | 20 GB | 50 GB |
Networking
All services communicate over an internal Docker network. Only Caddy exposes ports 80 and 443 to the host. Database and cache services are not accessible from outside the Docker network.
networks:
curateme:
driver: bridgePersistent Volumes
Data is persisted across container restarts using Docker volumes:
| Volume | Service | Mount Point |
|---|---|---|
mongo-data | mongo | /data/db |
redis-data | redis | /data |
caddy-data | caddy | /data |
caddy-config | caddy | /config |