-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdocker-compose.testnet.yml
More file actions
144 lines (139 loc) · 4.15 KB
/
docker-compose.testnet.yml
File metadata and controls
144 lines (139 loc) · 4.15 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
# ClawNet Testnet — 3-Node Docker Network
# ============================================================================
# Usage:
# docker compose -f docker-compose.testnet.yml up --build
# docker compose -f docker-compose.testnet.yml down -v
# docker compose -f docker-compose.testnet.yml logs -f
#
# Network topology:
# bootstrap (seed node) ← peer1 ← peer2
# All nodes discover each other via bootstrap → Kademlia DHT
#
# API endpoints:
# bootstrap: http://localhost:9528
# peer1: http://localhost:9530
# peer2: http://localhost:9532
# ============================================================================
services:
# ── Bootstrap / Seed Node ──────────────────────────────────────────────
bootstrap:
build: .
container_name: claw-bootstrap
hostname: bootstrap
ports:
- "9528:9528" # HTTP API
- "9529:9527" # P2P (internal 9527 → host 9529)
volumes:
- bootstrap-data:/data
environment:
- CLAW_API_HOST=0.0.0.0
- CLAW_API_PORT=9528
- CLAW_DATA_DIR=/data
- CLAW_PASSPHRASE=testnet-dev-passphrase
- CLAW_PRIVATE_KEY=${CLAW_PRIVATE_KEY:-}
- NODE_ENV=development
command: >
node packages/node/dist/daemon.js
--data-dir /data
--api-host 0.0.0.0
--api-port 9528
--listen /ip4/0.0.0.0/tcp/9527
--health-interval-ms 10000
restart: unless-stopped
deploy:
resources:
limits:
memory: 2G
cpus: '2.0'
healthcheck:
test: ["CMD", "wget", "-q", "--spider", "http://127.0.0.1:9528/api/v1/node"]
interval: 10s
timeout: 5s
retries: 5
start_period: 15s
networks:
- clawnet
# ── Peer Node 1 ────────────────────────────────────────────────────────
peer1:
build: .
container_name: claw-peer1
hostname: peer1
ports:
- "9530:9528" # HTTP API
- "9531:9527" # P2P
volumes:
- peer1-data:/data
environment:
- CLAW_API_HOST=0.0.0.0
- CLAW_API_PORT=9528
- CLAW_DATA_DIR=/data
- CLAW_PASSPHRASE=testnet-dev-passphrase
- CLAW_PRIVATE_KEY=${CLAW_PRIVATE_KEY:-}
- NODE_ENV=development
command: >
entrypoint-peer.sh
--bootstrap-api http://bootstrap:9528
--data-dir /data
--api-host 0.0.0.0
--api-port 9528
--listen /ip4/0.0.0.0/tcp/9527
--health-interval-ms 10000
depends_on:
bootstrap:
condition: service_healthy
restart: unless-stopped
healthcheck:
test: ["CMD", "wget", "-q", "--spider", "http://127.0.0.1:9528/api/v1/node"]
interval: 10s
timeout: 5s
retries: 5
start_period: 15s
networks:
- clawnet
# ── Peer Node 2 ────────────────────────────────────────────────────────
peer2:
build: .
container_name: claw-peer2
hostname: peer2
ports:
- "9532:9528" # HTTP API
- "9533:9527" # P2P
volumes:
- peer2-data:/data
environment:
- CLAW_API_HOST=0.0.0.0
- CLAW_API_PORT=9528
- CLAW_DATA_DIR=/data
- CLAW_PASSPHRASE=testnet-dev-passphrase
- CLAW_PRIVATE_KEY=${CLAW_PRIVATE_KEY:-}
- NODE_ENV=development
command: >
entrypoint-peer.sh
--bootstrap-api http://bootstrap:9528
--data-dir /data
--api-host 0.0.0.0
--api-port 9528
--listen /ip4/0.0.0.0/tcp/9527
--health-interval-ms 10000
depends_on:
bootstrap:
condition: service_healthy
restart: unless-stopped
healthcheck:
test: ["CMD", "wget", "-q", "--spider", "http://127.0.0.1:9528/api/v1/node"]
interval: 10s
timeout: 5s
retries: 5
start_period: 15s
networks:
- clawnet
volumes:
bootstrap-data:
driver: local
peer1-data:
driver: local
peer2-data:
driver: local
networks:
clawnet:
driver: bridge