harb/docker-compose.yml
openhands a46c30cff6 fix: landing page user test fixes (#162)
- Add VueQueryPlugin to landing main.ts (wagmi/vue requires it)
- Add Vite proxy for /api/graphql → ponder:42069/graphql
- Replace axios with native fetch in WalletCard.vue
- Add navigateTo() for CTA buttons (uses VITE_APP_URL env)
- Load contract addresses from bootstrap in landing entrypoint
- Add via_ir to foundry.toml (OptimizerV3Push3 stack-too-deep)
- Add VITE_APP_URL env to docker-compose landing service

Fixes: blank landing pages, broken LiveStats, missing CTA links,
missing contract addresses in footer
2026-02-23 14:47:38 +00:00

241 lines
5.9 KiB
YAML

version: "3.8"
networks:
harb-network:
driver: bridge
# Global logging configuration to prevent disk bloat
x-logging: &default-logging
driver: "json-file"
options:
max-size: "10m"
max-file: "3"
services:
anvil:
image: ghcr.io/foundry-rs/foundry:latest
command: ["/workspace/containers/anvil-entrypoint.sh"]
volumes:
- .:/workspace:z
expose:
- "8545"
ports:
- "127.0.0.1:8545:8545"
restart: unless-stopped
networks:
- harb-network
logging: *default-logging
healthcheck:
test: ["CMD", "cast", "block-number", "--rpc-url", "http://127.0.0.1:8545"]
interval: 2s
timeout: 1s
retries: 5
start_period: 5s
postgres:
image: docker.io/library/postgres:16-alpine
command:
- "postgres"
- "-c"
- "wal_level=minimal"
- "-c"
- "max_wal_size=128MB"
- "-c"
- "max_wal_senders=0"
- "-c"
- "archive_mode=off"
- "-c"
- "checkpoint_timeout=30min"
environment:
- POSTGRES_USER=ponder
- POSTGRES_PASSWORD=ponder_local
- POSTGRES_DB=ponder_local
volumes:
- postgres-data:/var/lib/postgresql/data
expose:
- "5432"
restart: unless-stopped
networks:
- harb-network
logging: *default-logging
healthcheck:
test: ["CMD-SHELL", "pg_isready -U ponder"]
interval: 5s
timeout: 5s
retries: 5
bootstrap:
image: ghcr.io/foundry-rs/foundry:latest
user: "0:0"
command: ["/workspace/containers/bootstrap.sh"]
volumes:
- .:/workspace:z
- .git:/workspace/.git:ro,z
environment:
- ANVIL_RPC=http://anvil:8545
- GIT_BRANCH=${GIT_BRANCH:-}
networks:
- harb-network
restart: "no"
logging: *default-logging
healthcheck:
test: ["CMD", "test", "-f", "/workspace/tmp/containers/contracts.env"]
interval: 5s
retries: 18
start_period: 10s
ponder:
build:
context: .
dockerfile: containers/node-dev.Containerfile
entrypoint: ["/workspace/containers/ponder-entrypoint.sh"]
user: "0:0"
volumes:
- .:/workspace:z
- .git:/workspace/.git:ro,z
- ./kraiken-lib/dist:/workspace/kraiken-lib/dist:ro,z
- ponder_node_modules:/workspace/services/ponder/node_modules
working_dir: /workspace
environment:
- CHOKIDAR_USEPOLLING=1
- GIT_BRANCH=${GIT_BRANCH:-}
- PONDER_RPC_TIMEOUT=${PONDER_RPC_TIMEOUT:-20000}
- START_BLOCK=${START_BLOCK:-}
expose:
- "42069"
ports:
- "127.0.0.1:42069:42069"
restart: unless-stopped
networks:
- harb-network
logging: *default-logging
healthcheck:
test: ["CMD", "wget", "--spider", "-q", "http://127.0.0.1:42069/"]
interval: 5s
timeout: 3s
retries: 12
start_period: 20s
webapp:
build:
context: .
dockerfile: containers/node-dev.Containerfile
entrypoint: ["/workspace/containers/webapp-entrypoint.sh"]
user: "0:0"
volumes:
- .:/workspace:z
- .git:/workspace/.git:ro,z
- ./kraiken-lib/dist:/workspace/kraiken-lib/dist:ro,z
- webapp_node_modules:/workspace/web-app/node_modules
working_dir: /workspace
environment:
- CHOKIDAR_USEPOLLING=1
- GIT_BRANCH=${GIT_BRANCH:-}
expose:
- "5173"
ports:
- "127.0.0.1:5173:5173"
restart: unless-stopped
networks:
- harb-network
logging: *default-logging
healthcheck:
test: ["CMD", "wget", "--spider", "-q", "http://127.0.0.1:5173/"]
interval: 5s
retries: 24
start_period: 10s
landing:
build:
context: .
dockerfile: containers/node-dev.Containerfile
entrypoint: ["/workspace/containers/landing-entrypoint.sh"]
user: "0:0"
volumes:
- .:/workspace:z
- .git:/workspace/.git:ro,z
- ./kraiken-lib/dist:/workspace/kraiken-lib/dist:ro,z
- landing_node_modules:/workspace/landing/node_modules
working_dir: /workspace
environment:
- CHOKIDAR_USEPOLLING=1
- GIT_BRANCH=${GIT_BRANCH:-}
- VITE_APP_URL=http://localhost:5173/app
expose:
- "5174"
restart: unless-stopped
networks:
- harb-network
logging: *default-logging
healthcheck:
test: ["CMD", "wget", "--spider", "-q", "http://127.0.0.1:5174/"]
interval: 5s
retries: 6
start_period: 10s
txn-bot:
build:
context: .
dockerfile: containers/node-dev.Containerfile
entrypoint: ["/workspace/containers/txnbot-entrypoint.sh"]
user: "0:0"
volumes:
- .:/workspace:z
- .git:/workspace/.git:ro,z
- ./kraiken-lib/dist:/workspace/kraiken-lib/dist:ro,z
- txnbot_node_modules:/workspace/services/txnBot/node_modules
working_dir: /workspace
environment:
- GIT_BRANCH=${GIT_BRANCH:-}
expose:
- "43069"
restart: unless-stopped
networks:
- harb-network
logging: *default-logging
healthcheck:
test: ["CMD", "wget", "--spider", "-q", "http://127.0.0.1:43069/status"]
interval: 5s
retries: 4
start_period: 10s
caddy:
image: docker.io/library/caddy:2.8
volumes:
- ./containers/Caddyfile:/etc/caddy/Caddyfile:z
ports:
- "0.0.0.0:8081:80"
restart: unless-stopped
networks:
- harb-network
logging: *default-logging
healthcheck:
test: ["CMD", "wget", "--spider", "-q", "http://127.0.0.1:80"]
interval: 2s
retries: 3
start_period: 2s
otterscan:
image: otterscan/otterscan:v2.6.0
environment:
- ERIGON_URL=http://localhost:8545
expose:
- "80"
ports:
- "127.0.0.1:5100:80"
restart: unless-stopped
networks:
- harb-network
logging: *default-logging
healthcheck:
test: ["CMD", "wget", "--spider", "-q", "http://127.0.0.1:80"]
interval: 5s
retries: 4
start_period: 5s
volumes:
postgres-data:
ponder_node_modules:
webapp_node_modules:
landing_node_modules:
txnbot_node_modules: