| name | dev-stack |
| description | Run the development infrastructure stack with Docker Compose. Use when starting, stopping, or managing the dev environment. |
| metadata | {"author":"Alexandre Roman","version":"2.2"} |
Development Stack
Docker Compose configuration for local development with compose-dev.yaml.
Quick Start
docker compose -f compose-dev.yaml up -d
docker compose -f compose-dev.yaml ps
docker compose -f compose-dev.yaml down
Services
Infrastructure Services:
| Service | Port | Description | Status |
|---|
| gateway | 8080 | Caddy reverse proxy (dashboard + API) | ✅ Complete |
| temporal | 7233, 8233 | Temporal server + Web UI | ✅ Complete |
| redis | 6379 | Redis (in-memory, no persistence) | ✅ Complete |
| toxiproxy | internal | Chaos engineering proxy | ✅ Complete |
| chaos-service | internal | Chaos control plane API | ✅ Complete |
| chaos-helper | internal | Error response provider for chaos | ✅ Complete |
Business Services:
| Service | Port | Description | Status |
|---|
| customer-service | internal | Customer CRUD (Go + Redis) | ✅ Complete |
| email-service | internal | Mock email notifications (Python) | ✅ Complete |
| redemption-service | internal | Mock redemption (TypeScript) | ✅ Complete |
| loyalty-service | host | Temporal workflows (Java/Spring) ** | ✅ Complete |
** Run manually with Maven in dev mode (see Development Workflow below)
Note: All business services are accessed through the gateway at port 8080.
Access Points
All services are accessed through the gateway:
Note: Even if Dashboard or Loyalty Service run on the host for development, always use http://localhost:8080. The gateway proxies to host services automatically.
Individual Service Management
docker compose -f compose-dev.yaml restart gateway
docker compose -f compose-dev.yaml logs -f customer-service
docker compose -f compose-dev.yaml up -d --build customer-service
docker compose -f compose-dev.yaml stop email-service
Health Checks
curl http://localhost:8080/health
curl http://localhost:8080/api/chaos/health
curl http://localhost:8080/api/customers
curl http://localhost:8080/api/emails
curl http://localhost:8080/api/redemptions
Chaos Testing
curl http://localhost:8080/api/chaos/services/customer/kill
curl http://localhost:8080/api/chaos/services/email/kill
curl http://localhost:8080/api/chaos/services/redemption/kill
curl http://localhost:8080/api/chaos/services/loyalty/kill
Development Workflow
For Dashboard development (with hot reload):
docker compose -f compose-dev.yaml up -d
cd dashboard
npm run dev
For Loyalty Service development:
docker compose -f compose-dev.yaml up -d
cd loyalty
mvn spring-boot:run
Important: Even when Dashboard and Loyalty Service run on the host machine, always access the application via http://localhost:8080. The gateway automatically proxies requests to services running on the host (via host.docker.internal).
Notes
- All data is ephemeral (in-memory only, no persistence)
- Gateway logs only errors (4xx/5xx), not every request
- Toxiproxy proxies to services on host machine via
host.docker.internal
- Services have automatic restart policies (
unless-stopped)
- Kill endpoints trigger immediate shutdown, Docker restarts within 10-20s
- Infrastructure ports exposed: Gateway :8080, Temporal :7233/:8233, Redis :6379
- Business services are internal-only (accessed via Gateway)