Skip to content

Commit 93f8364

Browse files
committed
Make Docker Compose run harness
1 parent 7a179cc commit 93f8364

4 files changed

Lines changed: 66 additions & 10 deletions

File tree

Dockerfile

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ WORKDIR /app
88
COPY --from=deps /app/node_modules ./node_modules
99
COPY . .
1010
RUN bun run build
11+
RUN bun run browser:build
1112

1213
FROM oven/bun:1.3.1-slim
1314
WORKDIR /app
@@ -16,4 +17,6 @@ COPY --from=build /app/package.json ./package.json
1617
COPY --from=build /app/node_modules ./node_modules
1718
COPY --from=build /app/dist ./dist
1819
COPY --from=build /app/claims ./claims
20+
COPY --from=build /app/apps/browser-harness/dist ./apps/browser-harness/dist
21+
RUN mkdir -p /app/runs
1922
CMD ["bun", "dist/cli.js", "council", "--once"]

README.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,12 @@ Docker testbed:
5252
docker compose up --build
5353
```
5454

55+
Open `http://localhost:5174` for the browser harness. Run one-shot CLI workers with:
56+
57+
```bash
58+
docker compose --profile workers up --build
59+
```
60+
5561
x402 mock work scenario:
5662

5763
```bash

docker-compose.x402-mock.yml

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
name: oleander-x402
2+
13
services:
24
x402-facilitator:
35
build: .
@@ -49,6 +51,9 @@ services:
4951
build: .
5052
command: ["bun", "dist/cli.js", "x402", "work", "--once"]
5153
environment:
54+
ZAP_RUNTIME_MODE: local
55+
ZAP_SIGNER_MODE: dev
56+
X402_MODE: mock
5257
ZAP_NODE_ID: witness-peg
5358
ZAP_CLAIM_FEED: http://x402-resource:8404/claims
5459
ZAP_WITNESS_DOMAIN: stablecoins
@@ -58,9 +63,9 @@ services:
5863
X402_BOUNTY_ATOMIC: ${X402_BOUNTY_ATOMIC:-1000000}
5964
ZAP_REWARD_ATOMIC: ${ZAP_REWARD_ATOMIC:-1000000000000000000}
6065
DEEPSEEK_MOCK: "1"
61-
DEEPSEEK_KEY_FILE: /run/secrets/deepseek.md
66+
ZAP_RUN_ARTIFACT_DIR: /app/runs
6267
volumes:
63-
- ../deepseek.md:/run/secrets/deepseek.md:ro
68+
- ./runs:/app/runs
6469
depends_on:
6570
x402-resource:
6671
condition: service_healthy
@@ -69,6 +74,9 @@ services:
6974
build: .
7075
command: ["bun", "dist/cli.js", "x402", "work", "--once"]
7176
environment:
77+
ZAP_RUNTIME_MODE: local
78+
ZAP_SIGNER_MODE: dev
79+
X402_MODE: mock
7280
ZAP_NODE_ID: witness-attestation
7381
ZAP_CLAIM_FEED: http://x402-resource:8404/claims
7482
ZAP_WITNESS_DOMAIN: stablecoins
@@ -78,9 +86,9 @@ services:
7886
X402_BOUNTY_ATOMIC: ${X402_BOUNTY_ATOMIC:-1000000}
7987
ZAP_REWARD_ATOMIC: ${ZAP_REWARD_ATOMIC:-1000000000000000000}
8088
DEEPSEEK_MOCK: "1"
81-
DEEPSEEK_KEY_FILE: /run/secrets/deepseek.md
89+
ZAP_RUN_ARTIFACT_DIR: /app/runs
8290
volumes:
83-
- ../deepseek.md:/run/secrets/deepseek.md:ro
91+
- ./runs:/app/runs
8492
depends_on:
8593
x402-resource:
8694
condition: service_healthy
@@ -89,6 +97,9 @@ services:
8997
build: .
9098
command: ["bun", "dist/cli.js", "x402", "work", "--once"]
9199
environment:
100+
ZAP_RUNTIME_MODE: local
101+
ZAP_SIGNER_MODE: dev
102+
X402_MODE: mock
92103
ZAP_NODE_ID: witness-availability
93104
ZAP_CLAIM_FEED: http://x402-resource:8404/claims
94105
ZAP_WITNESS_DOMAIN: availability
@@ -98,9 +109,9 @@ services:
98109
X402_BOUNTY_ATOMIC: ${X402_BOUNTY_ATOMIC:-1000000}
99110
ZAP_REWARD_ATOMIC: ${ZAP_REWARD_ATOMIC:-1000000000000000000}
100111
DEEPSEEK_MOCK: "1"
101-
DEEPSEEK_KEY_FILE: /run/secrets/deepseek.md
112+
ZAP_RUN_ARTIFACT_DIR: /app/runs
102113
volumes:
103-
- ../deepseek.md:/run/secrets/deepseek.md:ro
114+
- ./runs:/app/runs
104115
depends_on:
105116
x402-resource:
106117
condition: service_healthy

docker-compose.yml

Lines changed: 40 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,57 @@
1+
name: oleander
2+
13
services:
4+
browser-harness:
5+
build: .
6+
command: ["bun", "dist/cli.js", "harness", "serve"]
7+
ports:
8+
- "${ZAP_HARNESS_PORT:-5174}:5174"
9+
environment:
10+
ZAP_RUNTIME_MODE: local
11+
ZAP_SIGNER_MODE: dev
12+
X402_MODE: mock
13+
ZAP_HARNESS_PORT: 5174
14+
ZAP_SPONSORED_CLAIM_FEED: ${ZAP_SPONSORED_CLAIM_FEED:-claims/x402-fifty-claims.json}
15+
ZAP_HARNESS_EVENT_DELAY_MS: ${ZAP_HARNESS_EVENT_DELAY_MS:-75}
16+
ZAP_HARNESS_AUTO_RUN_MS: ${ZAP_HARNESS_AUTO_RUN_MS:-180000}
17+
ZAP_RUN_ARTIFACT_DIR: /app/runs
18+
volumes:
19+
- ./runs:/app/runs
20+
healthcheck:
21+
test: ["CMD-SHELL", "bun -e \"const r = await fetch('http://localhost:5174/health'); process.exit(r.ok ? 0 : 1)\""]
22+
interval: 2s
23+
timeout: 2s
24+
retries: 10
25+
226
witness-council:
27+
profiles: ["workers"]
328
build: .
429
command: ["bun", "dist/cli.js", "council", "--once"]
530
environment:
31+
ZAP_RUNTIME_MODE: local
32+
ZAP_SIGNER_MODE: dev
33+
X402_MODE: mock
634
ZAP_NODE_ID: witness-council
735
ZAP_CLAIM_FEED: claims/demo.json
8-
DEEPSEEK_KEY_FILE: /run/secrets/deepseek.md
36+
DEEPSEEK_MOCK: ${DEEPSEEK_MOCK:-1}
37+
DEEPSEEK_API_KEY: ${DEEPSEEK_API_KEY:-}
38+
ZAP_RUN_ARTIFACT_DIR: /app/runs
939
volumes:
10-
- ../deepseek.md:/run/secrets/deepseek.md:ro
40+
- ./runs:/app/runs
1141

1242
witness-stablecoin:
43+
profiles: ["workers"]
1344
build: .
1445
command: ["bun", "dist/cli.js", "run", "--once"]
1546
environment:
47+
ZAP_RUNTIME_MODE: local
48+
ZAP_SIGNER_MODE: dev
49+
X402_MODE: mock
1650
ZAP_NODE_ID: witness-stablecoin
1751
ZAP_CLAIM_FEED: claims/demo.json
18-
DEEPSEEK_KEY_FILE: /run/secrets/deepseek.md
52+
DEEPSEEK_MOCK: ${DEEPSEEK_MOCK:-1}
53+
DEEPSEEK_API_KEY: ${DEEPSEEK_API_KEY:-}
1954
ZAP_WITNESS_DOMAIN: stablecoins
55+
ZAP_RUN_ARTIFACT_DIR: /app/runs
2056
volumes:
21-
- ../deepseek.md:/run/secrets/deepseek.md:ro
57+
- ./runs:/app/runs

0 commit comments

Comments
 (0)