Repository navigation
Expand file tree
/
Copy pathdocker-compose.yml
More file actions
96 lines (91 loc) · 3.57 KB
/
Copy pathdocker-compose.yml
File metadata and controls
96 lines (91 loc) · 3.57 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
# Hope-Hash полный стек: miner + Prometheus + Grafana.
#
# Перед запуском:
# 1. Положить mainnet BTC-адрес в .env как BTC_ADDRESS=bc1q...
# (можно подсунуть через `BTC_ADDRESS=... docker compose up`).
# 2. Опционально: HOPE_HASH_TELEGRAM_TOKEN и HOPE_HASH_TELEGRAM_CHAT_ID
# для Telegram-уведомлений.
#
# docker compose up -d
# open http://localhost:8001 # web-дашборд (single-page UI)
# open http://localhost:8000/metrics # Prometheus exposition
# open http://localhost:8000/healthz # health JSON (200/503)
# open http://localhost:3000 # Grafana (admin / admin при первом входе)
# open http://localhost:9090 # Prometheus UI
#
# Если порт 8000 или 8001 занят — поменяйте маппинг здесь и у Prometheus в
# deploy/prometheus/prometheus.yml.
services:
miner:
build:
context: .
dockerfile: Dockerfile
image: hope-hash:0.7.0
container_name: hope-hash-miner
restart: unless-stopped
# Single combined HTTP-port: --metrics-port 8000 для /metrics+/healthz,
# --web-port 8001 — отдельный для дашборда. Compose пробрасывает оба.
command: >
${BTC_ADDRESS:?Set BTC_ADDRESS env var to your mainnet wallet address}
docker
--workers ${WORKERS:-2}
--db /data/hope_hash.db
--metrics-port 8000
--web-port 8001
--web-host 0.0.0.0
--no-banner
--healthz-stale-after 600
environment:
# Telegram опционален — если не задан, notifier тихо отключается.
HOPE_HASH_TELEGRAM_TOKEN: ${HOPE_HASH_TELEGRAM_TOKEN:-}
HOPE_HASH_TELEGRAM_CHAT_ID: ${HOPE_HASH_TELEGRAM_CHAT_ID:-}
# Включает long-poll для команд /stats/stop/restart. По умолчанию off.
HOPE_HASH_TELEGRAM_INBOUND: ${HOPE_HASH_TELEGRAM_INBOUND:-0}
volumes:
# SQLite-журнал шар хранится снаружи контейнера, чтобы выживать рестарты.
- ./data:/data
ports:
- "8000:8000" # /metrics + /healthz (Prometheus scrape + k8s probe)
- "8001:8001" # web-дашборд (HTML + /api/stats + SSE)
networks: [hope-net]
prometheus:
image: prom/prometheus:latest
container_name: hope-hash-prometheus
restart: unless-stopped
command:
- "--config.file=/etc/prometheus/prometheus.yml"
- "--storage.tsdb.path=/prometheus"
- "--storage.tsdb.retention.time=30d"
volumes:
- ./deploy/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml:ro
- prom-data:/prometheus
ports:
- "9090:9090"
depends_on:
- miner
networks: [hope-net]
grafana:
image: grafana/grafana:latest
container_name: hope-hash-grafana
restart: unless-stopped
environment:
GF_SECURITY_ADMIN_USER: ${GRAFANA_USER:-admin}
GF_SECURITY_ADMIN_PASSWORD: ${GRAFANA_PASSWORD:-admin}
GF_USERS_ALLOW_SIGN_UP: "false"
volumes:
# Provisioning datasource (Prometheus) и dashboard (hope-hash.json).
- ./deploy/grafana/datasource.yml:/etc/grafana/provisioning/datasources/datasource.yml:ro
- ./deploy/grafana/dashboard.yml:/etc/grafana/provisioning/dashboards/dashboard.yml:ro
- ./deploy/grafana:/var/lib/grafana/dashboards:ro
- grafana-data:/var/lib/grafana
ports:
- "3000:3000"
depends_on:
- prometheus
networks: [hope-net]
networks:
hope-net:
driver: bridge
volumes:
prom-data:
grafana-data: