-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdocker-compose.yaml
More file actions
206 lines (195 loc) · 5.82 KB
/
docker-compose.yaml
File metadata and controls
206 lines (195 loc) · 5.82 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
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
services:
queue-api:
container_name: queue-api
image: queue-api:dev
build:
context: ./queue
dockerfile: queue-api/Dockerfile
environment:
SPRING_DATA_REDIS_HOST: valkey
SPRING_DATA_REDIS_PORT: 6379
LOGGING_LEVEL_ROOT: INFO
LOGGING_LEVEL_COM_LIKELION_QUEUEAPI: DEBUG
# OTLP HTTP for logs and metrics
OTEL_EXPORTER_OTLP_ENDPOINT: http://alloy:4318
OTEL_EXPORTER_OTLP_PROTOCOL: http/protobuf
OTEL_SERVICE_NAME: queue-api
OTEL_LOGS_EXPORTER: otlp
OTEL_METRICS_EXPORTER: none
OTEL_TRACES_EXPORTER: none
OTEL_RESOURCE_ATTRIBUTES: "service.name=queue-api"
depends_on:
valkey:
condition: service_started
alloy:
condition: service_started
ports:
- "8080:8080"
networks:
- queue-net
healthcheck:
test: ["CMD", "wget", "-qO-", "http://localhost:8080/actuator/health"]
start_period: 10s
interval: 30s
timeout: 5s
retries: 3
queue-manager:
container_name: queue-manager
image: queue-manager:dev
build:
context: ./queue
dockerfile: queue-manager/Dockerfile
environment:
SPRING_DATA_REDIS_HOST: valkey
SPRING_DATA_REDIS_PORT: 6379
LOGGING_LEVEL_ROOT: INFO
LOGGING_LEVEL_COM_LIKELION_QUEUEMANAGER: DEBUG
# OTLP HTTP for logs and metrics
OTEL_EXPORTER_OTLP_ENDPOINT: http://alloy:4318
OTEL_EXPORTER_OTLP_PROTOCOL: http/protobuf
OTEL_SERVICE_NAME: queue-manager
OTEL_LOGS_EXPORTER: otlp
OTEL_METRICS_EXPORTER: none
OTEL_TRACES_EXPORTER: none
OTEL_RESOURCE_ATTRIBUTES: "service.name=queue-manager"
depends_on:
valkey:
condition: service_started
alloy:
condition: service_started
networks:
- queue-net
healthcheck:
test: ["CMD", "wget", "-qO-", "http://localhost:8081/actuator/health"]
start_period: 10s
interval: 30s
timeout: 5s
retries: 3
chat-server:
container_name: chat-server
image: chat-server:dev
build:
context: ./chat
dockerfile: LikeLionChat.Server/Dockerfile
environment:
ConnectionStrings__Valkey: "valkey:6379"
ASPNETCORE_ENVIRONMENT: "Development"
OTEL_EXPORTER_OTLP_ENDPOINT: http://alloy:4317
OTEL_SERVICE_NAME: chat-server
ChatServer__SoftCap: 100
ChatServer__MaxCap: 120
depends_on:
alloy:
condition: service_started
ports:
- "8081:8080"
networks:
- queue-net
valkey:
image: valkey/valkey:8
command: ["valkey-server", "--appendonly", "yes"]
networks:
- queue-net
valkey-dashboard:
container_name: valkey-dashboard
image: redis/redisinsight:latest
depends_on:
valkey:
condition: service_started
environment:
RI_ACCEPT_TERMS_AND_CONDITIONS: true
RI_DATABASE_MANAGEMENT: false
RI_REDIS_HOST: valkey
RI_REDIS_PORT: 6379
ports:
- "8082:5540"
networks:
- queue-net
# =============================================================================
# Observability Stack
# =============================================================================
# Grafana Alloy - OpenTelemetry Collector
alloy:
container_name: alloy
image: grafana/alloy:latest
volumes:
- ./observability/alloy-config.alloy:/etc/alloy/config.alloy
- /var/run/docker.sock:/var/run/docker.sock:ro
command:
- run
- /etc/alloy/config.alloy
- --server.http.listen-addr=0.0.0.0:12345
- --stability.level=generally-available
ports:
- "12345:12345" # Alloy UI
- "4317:4317" # OTLP gRPC
- "4318:4318" # OTLP HTTP
depends_on:
prometheus:
condition: service_started
loki:
condition: service_started
networks:
- queue-net
# Prometheus - Metrics Storage
prometheus:
container_name: prometheus
image: prom/prometheus:latest
volumes:
- ./observability/prometheus.yml:/etc/prometheus/prometheus.yml
- prometheus-data:/prometheus
command:
- --config.file=/etc/prometheus/prometheus.yml
- --storage.tsdb.path=/prometheus
- --web.console.libraries=/etc/prometheus/console_libraries
- --web.console.templates=/etc/prometheus/consoles
- --web.enable-lifecycle
- --web.enable-remote-write-receiver
ports:
- "9090:9090"
networks:
- queue-net
# Loki - Log Storage
loki:
container_name: loki
image: grafana/loki:latest
volumes:
- ./observability/loki-config.yaml:/etc/loki/local-config.yaml
- loki-data:/loki
command: -config.file=/etc/loki/local-config.yaml
ports:
- "3100:3100"
networks:
- queue-net
# Grafana - Dashboard
grafana:
container_name: grafana
image: grafana/grafana:latest
volumes:
- ./observability/grafana-datasources.yml:/etc/grafana/provisioning/datasources/datasources.yml
- ./observability/grafana-dashboards.yml:/etc/grafana/provisioning/dashboards/dashboards.yml
- ./observability/dashboards:/etc/grafana/provisioning/dashboards
- grafana-data:/var/lib/grafana
environment:
GF_SECURITY_ADMIN_USER: admin
GF_SECURITY_ADMIN_PASSWORD: admin
GF_USERS_ALLOW_SIGN_UP: false
GF_AUTH_ANONYMOUS_ENABLED: true
GF_AUTH_ANONYMOUS_ORG_ROLE: Viewer
GF_SECURITY_DISABLE_INITIAL_ADMIN_CONFIGURATION: true
ports:
- "3000:3000"
depends_on:
prometheus:
condition: service_started
loki:
condition: service_started
networks:
- queue-net
networks:
queue-net:
driver: bridge
volumes:
prometheus-data:
loki-data:
grafana-data: