Repository navigation
Expand file tree
/
Copy pathdocker-compose.yml
More file actions
86 lines (80 loc) · 2.67 KB
/
Copy pathdocker-compose.yml
File metadata and controls
86 lines (80 loc) · 2.67 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
services:
# 1. Your Go Daemon (The App)
extractor:
build: .
ports:
- "8080:8080" # Metrics
- "6060:6060" # pprof
environment:
- RPC_URL=${RPC_URL}
depends_on:
prometheus:
condition: service_healthy
# 2. The Observability Stack
prometheus:
restart: unless-stopped
image: prom/prometheus:latest
volumes:
- ./config/prometheus.yml:/etc/prometheus/prometheus.yml
- ./config/alerts.rules.yml:/etc/prometheus/alerts.rules.yml
- prometheus_data:/prometheus
ports:
- "9090:9090" # Change host port if already bound locally (e.g., "8080:9090")
healthcheck:
test: ["CMD", "wget", "-q", "--tries=1", "--spider", "http://localhost:9090/-/healthy"]
interval: 10s
timeout: 5s
retries: 3
alertmanager:
restart: unless-stopped
image: prom/alertmanager:latest
container_name: sentinelsol-alertmanager-1
ports:
- "9093:9093"
env_file:
- .env
# Mount the raw config as a read-only template
volumes:
- ./config/alertmanager.yml:/etc/alertmanager/alertmanager.yml.template:ro
entrypoint: [ "/bin/sh", "-c" ]
# Safely swap vars and write to /tmp (writable by 'nobody' user)
command:
- |
sed -e 's|\$${TELEGRAM_CHAT_ID}|'$$TELEGRAM_CHAT_ID'|g' \
-e 's|\$${TELEGRAM_BOT_TOKEN}|'$$TELEGRAM_BOT_TOKEN'|g' \
/etc/alertmanager/alertmanager.yml.template > /tmp/alertmanager_parsed.yml
/bin/alertmanager --config.file=/tmp/alertmanager_parsed.yml
loki:
image: grafana/loki:2.9.0
ports:
- "3100:3100" # Change host port if already bound locally (e.g., "3101:3100")
command: -config.file=/etc/loki/local-config.yaml
promtail:
image: grafana/promtail:2.9.0
volumes:
- /var/log:/var/log
- /var/lib/docker/containers:/var/lib/docker/containers:ro
- ./config/promtail-config.yml:/etc/promtail/promtail.yml # Mount the config file
command: -config.file=/etc/promtail/promtail.yml
depends_on:
- loki
grafana:
restart: unless-stopped
image: grafana/grafana:latest
ports:
- "3000:3000" # Change host port if already bound locally (e.g., "8080:3000")
env_file:
- .env
environment:
- GF_SECURITY_ADMIN_PASSWORD=${GRAFANA_ADMIN_PASSWORD}
volumes:
- ./config/grafana/provisioning/datasources:/etc/grafana/provisioning/datasources
- ./config/grafana/provisioning/dashboards:/etc/grafana/provisioning/dashboards
- ./config/grafana/dashboards:/var/lib/grafana/dashboards
depends_on:
prometheus:
condition: service_healthy
loki:
condition: service_started
volumes:
prometheus_data: