js-waku/packages/run/docker-compose.yml
Arseniy Klempner 0df18b2a75
feat: create @waku/run package for local dev env (#2678)
* feat: create @waku/run package for local dev env

* chore: add @waku/run to release please config

* feat: test @waku/run with playwright

* fix: don't run waku/run tests in CI

* fix: cache images so docker-compose can work offline

* feat: set nodekey and staticnode flags for each nwaku node

* fix: use constants for node ids

* chore: set directories for running via npx

* fix: remove .env, support env vars for nwaku ports

* fix: use separate db (same instance) for each node

* feat: add command to test dev env

* chore: use package version in container name

* fix: replace hardcoded WS/REST ports with constants/env vars

* chore: clean up README

* fix: refactor config printing into own function

* fix: add run package to release please manifest

* fix: defer to root folder gitignore/cspell

* fix: update node version and remove tsx

* fix: remove browser tests and express dep

* fix: replace magic values with constants

* fix: move to root .gitignore

* fix: move cspell to root
2025-10-22 21:38:28 -07:00

143 lines
3.9 KiB
YAML

# Environment variable definitions
x-pg-pass: &pg_pass ${POSTGRES_PASSWORD:-test123}
x-pg-user: &pg_user ${POSTGRES_USER:-postgres}
x-pg-environment: &pg_env
POSTGRES_USER: *pg_user
POSTGRES_PASSWORD: *pg_pass
# Shared nwaku configuration
x-nwaku-base: &nwaku-base
image: ${NWAKU_IMAGE:-wakuorg/nwaku:v0.36.0}
pull_policy: if_not_present
restart: on-failure
logging:
driver: json-file
options:
max-size: "10m"
max-file: "3"
services:
postgres:
image: postgres:15.4-alpine3.18
pull_policy: if_not_present
restart: on-failure
environment:
<<: *pg_env
POSTGRES_DB: postgres
volumes:
- postgres-data:/var/lib/postgresql/data
- ./init-db.sh:/docker-entrypoint-initdb.d/init-db.sh
healthcheck:
test: ["CMD-SHELL", "pg_isready -U postgres"]
interval: 10s
timeout: 5s
retries: 5
start_period: 10s
nwaku-1:
<<: *nwaku-base
container_name: ${COMPOSE_PROJECT_NAME:-waku-run-0-0-1}-node-1
networks:
default:
ipv4_address: 172.20.0.10
ports:
- "${NODE1_TCP_PORT:-30303}:30303/tcp"
- "${NODE1_WS_PORT:-60000}:60000/tcp"
- "${NODE1_REST_PORT:-8646}:8646/tcp"
environment:
<<: *pg_env
depends_on:
postgres:
condition: service_healthy
command:
- --nodekey=e419c3cf4f09ac3babdf61856e6faa0e0c6a7d97674d5401a0114616549c7632
- --staticnode=/ip4/172.20.0.11/tcp/60001/ws/p2p/16Uiu2HAm5aZU47YkiUoARqivbCXwuFPzFFXXiURAorySqAQbL6EQ
- --relay=true
- --filter=true
- --lightpush=true
- --store=true
- --peer-exchange=true
- --discv5-discovery=true
- --cluster-id=0
- --shard=0
- --shard=1
- --shard=2
- --shard=3
- --shard=4
- --shard=5
- --shard=6
- --shard=7
- --listen-address=0.0.0.0
- --tcp-port=30303
- --websocket-support=true
- --websocket-port=60000
- --ext-multiaddr=/dns4/nwaku-1/tcp/60000/ws
- --ext-multiaddr=/ip4/127.0.0.1/tcp/60000/ws
- --rest=true
- --rest-address=0.0.0.0
- --rest-port=8646
- --rest-admin=true
- --store-message-db-url=postgresql://${POSTGRES_USER:-postgres}:${POSTGRES_PASSWORD:-test123}@postgres:5432/nwaku1
- --log-level=${LOG_LEVEL:-INFO}
- --max-connections=150
nwaku-2:
<<: *nwaku-base
container_name: ${COMPOSE_PROJECT_NAME:-waku-run-0-0-1}-node-2
networks:
default:
ipv4_address: 172.20.0.11
ports:
- "${NODE2_TCP_PORT:-30304}:30304/tcp"
- "${NODE2_WS_PORT:-60001}:60001/tcp"
- "${NODE2_REST_PORT:-8647}:8647/tcp"
environment:
<<: *pg_env
depends_on:
postgres:
condition: service_healthy
nwaku-1:
condition: service_started
command:
- --nodekey=50632ab0efd313bfb4aa842de716f03dacd181c863770abd145e3409290fdaa7
- --staticnode=/ip4/172.20.0.10/tcp/60000/ws/p2p/16Uiu2HAmF6oAsd23RMAnZb3NJgxXrExxBTPMdEoih232iAZkviU2
- --relay=true
- --filter=true
- --lightpush=true
- --store=true
- --peer-exchange=true
- --discv5-discovery=true
- --cluster-id=0
- --shard=0
- --shard=1
- --shard=2
- --shard=3
- --shard=4
- --shard=5
- --shard=6
- --shard=7
- --listen-address=0.0.0.0
- --tcp-port=30304
- --websocket-support=true
- --websocket-port=60001
- --ext-multiaddr=/dns4/nwaku-2/tcp/60001/ws
- --ext-multiaddr=/ip4/127.0.0.1/tcp/60001/ws
- --rest=true
- --rest-address=0.0.0.0
- --rest-port=8647
- --rest-admin=true
- --store-message-db-url=postgresql://${POSTGRES_USER:-postgres}:${POSTGRES_PASSWORD:-test123}@postgres:5432/nwaku2
- --log-level=${LOG_LEVEL:-INFO}
- --max-connections=150
volumes:
postgres-data:
networks:
default:
name: ${COMPOSE_PROJECT_NAME:-waku-run-0-0-1}-network
ipam:
config:
- subnet: 172.20.0.0/16