forked from grafana/mcp-grafana
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdocker-compose.yaml
More file actions
282 lines (258 loc) · 9.55 KB
/
Copy pathdocker-compose.yaml
File metadata and controls
282 lines (258 loc) · 9.55 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
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
services:
grafana:
image: grafana/grafana:13.0.2@sha256:5dad0df181cb644a14e13617b913b261a54f7d4fd4510721dba420929f35bea2
environment:
GF_AUTH_ANONYMOUS_ENABLED: "false"
GF_INSTALL_PLUGINS: grafana-clickhouse-datasource,grafana-opensearch-datasource,elasticsearch 12.6.2
GF_PLUGINS_PREINSTALL_SYNC: quickwit-quickwit-datasource@0.6.0@https://github.com/quickwit-oss/quickwit-datasource/releases/download/v0.6.0/quickwit-quickwit-datasource-0.6.0.zip
GF_LOG_LEVEL: debug
GF_SERVER_ROUTER_LOGGING: "true"
GF_RENDERING_SERVER_URL: http://renderer:8081/render
GF_RENDERING_CALLBACK_URL: http://grafana:3000/
GF_RENDERING_RENDERER_TOKEN: integration-test-renderer-token
ports:
- 3000:3000/tcp
volumes:
- ./testdata/provisioning:/etc/grafana/provisioning
- ./testdata/dashboards:/var/lib/grafana/dashboards
- type: tmpfs
target: /var/lib/grafana/empty-alerts-folder
healthcheck:
test: ["CMD", "curl", "-sf", "http://localhost:3000/api/health"]
interval: 5s
timeout: 3s
retries: 20
# grafana-legacy runs Grafana 11, which predates the v1beta1 dashboard API
# (it serves only dashboard.grafana.app v0alpha1/v1alpha1/v2alpha1, never
# v1beta1, and cannot store schema v2). The dashboard tools' capability check
# therefore falls back to the legacy REST API against this instance, letting
# integration tests exercise that path.
grafana-legacy:
image: grafana/grafana:11.6.14-security-01@sha256:b3545ba7fa9aad785202461740f96d51c457a72b418d71f8a01d0f82fcb67232
environment:
GF_AUTH_ANONYMOUS_ENABLED: "false"
GF_LOG_LEVEL: debug
GF_SERVER_ROUTER_LOGGING: "true"
ports:
- 3002:3000/tcp
healthcheck:
test: ["CMD", "curl", "-sf", "http://localhost:3000/api/health"]
interval: 5s
timeout: 3s
retries: 20
gitserver:
build: ./testdata/gitserver
ports:
- "8888:80"
volumes:
- ./testdata/provisioning-repo:/srv/seed:ro
# The entrypoint seeds the repo before exec'ing httpd, so a live server
# implies the repo is ready — a static GET / is enough, no need to spawn
# the upload-pack CGI.
healthcheck:
test: ["CMD", "wget", "-q", "-O", "/dev/null", "http://localhost/"]
interval: 5s
timeout: 3s
retries: 10
provisioning-repo-seed:
image: curlimages/curl:8.18.0@sha256:d94d07ba9e7d6de898b6d96c1a072f6f8266c687af78a74f380087a0addf5d17
depends_on:
grafana:
condition: service_healthy
gitserver:
condition: service_healthy
volumes:
- ./testdata/provisioning-repo-seed.sh:/seed.sh
entrypoint: ["sh", "/seed.sh"]
renderer:
image: grafana/grafana-image-renderer:latest@sha256:340c91e98ccd65001a3da4d0192fcf0ed13e95609a51a0d62c35a61b6ff28dff
environment:
AUTH_TOKEN: integration-test-renderer-token
ports:
- 8081
prometheus:
image: prom/prometheus@sha256:e4254400b85610324913f0dc4acf92603d9984e7519414c5a12811aa6146acc3
ports:
- "9090:9090"
entrypoint: /etc/prometheus/entrypoint.sh
volumes:
- ./testdata/prometheus.yml:/etc/prometheus/prometheus.yml
- ./testdata/prometheus-seed.yml:/etc/prometheus/prometheus-seed.yml
- ./testdata/prometheus-entrypoint.sh:/etc/prometheus/entrypoint.sh
loki:
image: grafana/loki:3.6.8@sha256:9db961170b729dc38277963cbb4a79941626388562cc455db61bf85564aa8945
ports:
- "3100:3100"
command: -config.file=/etc/loki/loki-config.yml
volumes:
- ./testdata/loki-config.yml:/etc/loki/loki-config.yml
- ./testdata/loki-rules.yml:/loki/rules/fake/loki-rules.yml
promtail:
image: grafana/promtail:3.6.8@sha256:6cfa64ec432b24a912d640e2edb940eeae2666f61861a66c121d763dd7241381
volumes:
- ./testdata/promtail-config.yml:/etc/promtail/config.yml
- /var/run/docker.sock:/var/run/docker.sock
command: -config.file=/etc/promtail/config.yml
depends_on:
- loki
pyroscope:
image: grafana/pyroscope:2.0.1@sha256:704889ae04768d982a0a71935bb054948993ddc3fe80234611d20877ba8be4c9
ports:
- 4040:4040
tempo:
image: grafana/tempo:2.10.0-rc.0@sha256:ab73a4fa3586e866be3322507491b66d49c9607592128b72b3aad80e3b355a12
command: ["-config.file=/etc/tempo/tempo-config.yaml"]
volumes:
- ./testdata/tempo-config.yaml:/etc/tempo/tempo-config.yaml
ports:
- "3200:3200" # tempo HTTP API
- "4317:4317" # OTLP gRPC receiver
- "4318:4318" # OTLP HTTP receiver
tempo2:
image: grafana/tempo:2.10.0-rc.0@sha256:ab73a4fa3586e866be3322507491b66d49c9607592128b72b3aad80e3b355a12
command: ["-config.file=/etc/tempo/tempo-config.yaml"]
volumes:
- ./testdata/tempo-config-2.yaml:/etc/tempo/tempo-config.yaml
ports:
- "3201:3201" # tempo instance 2
alertmanager:
image: prom/alertmanager:v0.31.1@sha256:88b605de9aba0410775c1eb3438f951115054e0d307f23f274a4c705f51630c1
ports:
- "9093:9093"
volumes:
- ./testdata/alertmanager.yml:/etc/alertmanager/alertmanager.yml
command:
- "--config.file=/etc/alertmanager/alertmanager.yml"
- "--storage.path=/alertmanager"
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:8.17.0
environment:
- discovery.type=single-node
- xpack.security.enabled=false
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
ports:
- "9200:9200"
healthcheck:
test: ["CMD-SHELL", "curl -sf http://localhost:9200/_cluster/health | grep -q '\"status\":\"green\"\\|\"status\":\"yellow\"'"]
interval: 10s
timeout: 5s
retries: 10
elasticsearch-seed:
image: curlimages/curl:8.18.0@sha256:d94d07ba9e7d6de898b6d96c1a072f6f8266c687af78a74f380087a0addf5d17
depends_on:
elasticsearch:
condition: service_healthy
volumes:
- ./testdata/elasticsearch-seed.sh:/seed.sh
entrypoint: ["sh", "/seed.sh"]
opensearch:
image: opensearchproject/opensearch:3.6.0@sha256:57bd3c879ad27123a9a6cd75e2adba504189d3131d00a669f3baf9210bc4538c
environment:
- discovery.type=single-node
- DISABLE_SECURITY_PLUGIN=true
- "OPENSEARCH_JAVA_OPTS=-Xms512m -Xmx512m"
ports:
- "9201:9200"
healthcheck:
test: ["CMD-SHELL", "curl -sf http://localhost:9200/_cluster/health | grep -q '\"status\":\"green\"\\|\"status\":\"yellow\"'"]
interval: 10s
timeout: 5s
retries: 10
opensearch-seed:
image: curlimages/curl:8.12.1
depends_on:
opensearch:
condition: service_healthy
volumes:
- ./testdata/opensearch-seed.sh:/seed.sh
entrypoint: ["sh", "/seed.sh"]
quickwit:
image: quickwit/quickwit:0.8.2
command: ["run"]
ports:
- "7280:7280"
healthcheck:
test: ["CMD-SHELL", "curl -sf http://localhost:7280/health/livez || curl -sf http://localhost:7280/api/v1/version"]
interval: 10s
timeout: 5s
retries: 15
quickwit-seed:
image: curlimages/curl:8.18.0@sha256:d94d07ba9e7d6de898b6d96c1a072f6f8266c687af78a74f380087a0addf5d17
depends_on:
quickwit:
condition: service_healthy
volumes:
- ./testdata/quickwit-seed.sh:/seed.sh
entrypoint: ["sh", "/seed.sh"]
localstack:
image: localstack/localstack:4.14@sha256:3ebc37595918b8accb852f8048fef2aff047d465167edd655528065b07bc364a
ports:
- "4566:4566"
environment:
SERVICES: cloudwatch,logs
AWS_DEFAULT_REGION: us-east-1
EAGER_SERVICE_LOADING: 1
volumes:
- ./testdata/localstack-init.sh:/etc/localstack/init/ready.d/init.sh
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:4566/_localstack/health"]
interval: 10s
timeout: 5s
retries: 5
influxdb:
image: influxdb:2.7
ports:
- "8086:8086"
environment:
DOCKER_INFLUXDB_INIT_MODE: setup
DOCKER_INFLUXDB_INIT_USERNAME: admin
DOCKER_INFLUXDB_INIT_PASSWORD: adminadmin
DOCKER_INFLUXDB_INIT_ORG: mcptests
DOCKER_INFLUXDB_INIT_BUCKET: metrics
DOCKER_INFLUXDB_INIT_ADMIN_TOKEN: mcptests-admin-token
healthcheck:
test: ["CMD", "influx", "ping"]
interval: 10s
timeout: 5s
retries: 10
influxdb-seed:
image: curlimages/curl:8.18.0@sha256:d94d07ba9e7d6de898b6d96c1a072f6f8266c687af78a74f380087a0addf5d17
depends_on:
influxdb:
condition: service_healthy
volumes:
- ./testdata/influxdb-seed.sh:/seed.sh
entrypoint: ["sh", "/seed.sh"]
clickhouse:
image: clickhouse/clickhouse-server:25.12@sha256:8a790dd3468db22b1d4e7b18a176f378ff5ff6053b9c48dd4ea1fa71a24c5ba6
ports:
- "8123:8123"
- "9000:9000"
volumes:
- ./testdata/clickhouse-init.sql:/docker-entrypoint-initdb.d/init.sql
- ./testdata/clickhouse-users.xml:/etc/clickhouse-server/users.d/default-user.xml
healthcheck:
test: ["CMD", "clickhouse-client", "--query", "SELECT 1"]
interval: 10s
timeout: 5s
retries: 5
graphite:
image: graphiteapp/graphite-statsd:latest@sha256:2d61228771119ddaee2f62d65739d3b5e903de36666e899703e47be1def571fe
healthcheck:
test: ["CMD-SHELL", "wget -q -O /dev/null 'http://127.0.0.1/metrics/find?query=*'"]
interval: 10s
timeout: 5s
retries: 15
volumes:
- graphite-whisper:/opt/graphite/storage/whisper
graphite-seed:
image: graphiteapp/graphite-statsd:latest@sha256:2d61228771119ddaee2f62d65739d3b5e903de36666e899703e47be1def571fe
depends_on:
graphite:
condition: service_healthy
volumes:
- graphite-whisper:/opt/graphite/storage/whisper
- ./testdata/graphite-seed.sh:/seed.sh
entrypoint: ["sh", "/seed.sh"]
volumes:
graphite-whisper: