This repository was archived by the owner on Jun 21, 2026. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdocker-compose.demo.yml
More file actions
159 lines (146 loc) · 4.59 KB
/
Copy pathdocker-compose.demo.yml
File metadata and controls
159 lines (146 loc) · 4.59 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
version: '3.8'
# Demo Mode: Docker-Only Distributed Task Observatory
# All containers use odto-demo- prefix to avoid conflicts with full (kind) installation
# All ports are in 13000+ range to avoid conflicts with common dev ports
networks:
odto-demo-net:
name: odto-demo-net
volumes:
odto-demo-postgres:
odto-demo-mongo:
odto-demo-redis:
odto-demo-rabbitmq:
services:
# PostgreSQL - Event sourcing store
postgres:
container_name: odto-demo-postgres
image: postgres:15-alpine
networks: [odto-demo-net]
volumes:
- odto-demo-postgres:/var/lib/postgresql/data
environment:
POSTGRES_USER: observatory
POSTGRES_PASSWORD: demo
POSTGRES_DB: events
# NOT exposed on host - internal only
# MongoDB - Job metadata store
mongodb:
container_name: odto-demo-mongo
image: mongo:7
networks: [odto-demo-net]
volumes:
- odto-demo-mongo:/data/db
# NOT exposed on host - internal only
# Redis - Caching layer
redis:
container_name: odto-demo-redis
image: redis:7-alpine
networks: [odto-demo-net]
volumes:
- odto-demo-redis:/data
# NOT exposed on host - internal only
# RabbitMQ - Message broker
rabbitmq:
container_name: odto-demo-rabbitmq
image: rabbitmq:3-management-alpine
networks: [odto-demo-net]
volumes:
- odto-demo-rabbitmq:/var/lib/rabbitmq
ports:
- "25672:15672" # Management UI only - AMQP intentionally NOT exposed
environment:
RABBITMQ_DEFAULT_USER: observatory
RABBITMQ_DEFAULT_PASS: demo
# Gateway - API entry point
gateway:
container_name: odto-demo-gateway
image: node:20-alpine
working_dir: /app
networks: [odto-demo-net]
ports:
- "13000:3000"
depends_on:
- rabbitmq
- postgres
environment:
- NODE_ENV=production
- PORT=3000
- RABBITMQ_URL=amqp://observatory:demo@odto-demo-rabbitmq:5672
- POSTGRES_URL=postgres://observatory:demo@odto-demo-postgres:5432/events
volumes:
- ../../src/services/gateway:/app:ro
command: sh -c "npm install --omit=dev && npm start"
# Processor - Job execution (Python)
processor:
container_name: odto-demo-processor
image: python:3.11-slim
working_dir: /app
networks: [odto-demo-net]
depends_on:
- rabbitmq
environment:
- RABBITMQ_URL=amqp://observatory:demo@odto-demo-rabbitmq:5672
volumes:
- ../../src/services/processor:/app:ro
command: sh -c "pip install --no-cache-dir -r requirements.txt && python main.py"
# NOT exposed on host - internal only
# Metrics Engine - Observability (Go)
metrics-engine:
container_name: odto-demo-metrics-engine
image: golang:1.21-alpine
working_dir: /app
networks: [odto-demo-net]
depends_on:
- rabbitmq
environment:
- RABBITMQ_URL=amqp://observatory:demo@odto-demo-rabbitmq:5672
volumes:
- ../../src/services/metrics-engine:/app:ro
command: sh -c "go run ."
# NOT exposed on host - internal only
# Read Model - Query API (Go)
read-model:
container_name: odto-demo-read-model
image: golang:1.21-alpine
working_dir: /app
networks: [odto-demo-net]
ports:
- "18080:8080"
depends_on:
- mongodb
- postgres
environment:
- MONGO_URL=mongodb://odto-demo-mongo:27017
- POSTGRES_URL=postgres://observatory:demo@odto-demo-postgres:5432/events
volumes:
- ../../src/services/read-model:/app:ro
command: sh -c "go run ."
# Web Dashboard UI
web-ui:
container_name: odto-demo-web
image: node:20-alpine
working_dir: /app
networks: [odto-demo-net]
ports:
- "18081:8080"
depends_on:
- gateway
- read-model
environment:
- GATEWAY_URL=http://odto-demo-gateway:3000
- READ_MODEL_URL=http://odto-demo-read-model:8080
volumes:
- ../../src/interfaces/web:/app:ro
command: sh -c "npm install --omit=dev && npm start"
# Port mapping summary (demo mode uses 13000+ range):
#
# | Service | Internal | Demo Host | Purpose |
# |----------------|----------|-----------|-------------------|
# | gateway | 3000 | 13000 | API |
# | read-model | 8080 | 18080 | Query API |
# | web-ui | 8080 | 18081 | Dashboard |
# | rabbitmq-mgmt | 15672 | 25672 | RabbitMQ UI |
# | postgres | 5432 | - | Internal only |
# | mongodb | 27017 | - | Internal only |
# | redis | 6379 | - | Internal only |
# | rabbitmq-amqp | 5672 | - | Internal only |