Files
BlockchainEngineer 6af3f606a2 fix(devnet): correct p2p ports, env typo, and missing validator volumes
- Fix docker-compose.yml p2p port mappings (30304:30303, 30305:30303)
- Fix typo BESUS_GENESIS_FILE -> BESU_GENESIS_FILE
- Add missing volumes/environment to validator2 and validator3 services
- Remove outdated package-lock.json to let CI regenerate cleanly
- Validate genesis determinism and extraData alignment

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-05-07 05:03:07 +00:00

196 lines
5.5 KiB
YAML

version: "3.8"
services:
validator1:
image: hyperledger/besu:24.6.0
container_name: jcc-validator-1
hostname: validator1
restart: unless-stopped
networks:
- jcc-devnet
ports:
- "8545:8545"
- "8546:8546"
- "9545:9545"
- "30303:30303"
volumes:
- ./validator-keys/validator1:/opt/besu/keys
- ./besu-config/genesis.json:/opt/besu/genesis.json:ro
- ./besu-config/static-nodes.json:/opt/besu/static-nodes.json:ro
- besu-data-1:/opt/besu/data
environment:
- BESU_DATA_PATH=/opt/besu/data
- BESU_GENESIS_FILE=/opt/besu/genesis.json
command:
- --genesis-file=/opt/besu/genesis.json
- --data-path=/opt/besu/data
- --node-private-key-file=/opt/besu/keys/key
- --static-nodes-file=/opt/besu/static-nodes.json
- --rpc-http-enabled
- --rpc-http-api=ETH,NET,IBFT,WEB3,ADMIN
- --rpc-http-port=8545
- --rpc-http-host=0.0.0.0
- --rpc-http-cors-origins=*
- --rpc-ws-enabled
- --rpc-ws-api=ETH,NET,IBFT,WEB3
- --rpc-ws-port=8546
- --rpc-ws-host=0.0.0.0
- --host-allowlist=*
- --metrics-enabled
- --metrics-port=9545
- --metrics-host=0.0.0.0
- --min-gas-price=0
- --sync-mode=FULL
- --discovery-enabled=false
- --p2p-enabled=true
- --p2p-port=30303
- --logging=INFO
# IBFT 2.0 block time configured in genesis (2s)
healthcheck:
test: ["CMD-SHELL", "wget -qO- http://localhost:8545 2>/dev/null || exit 1"]
interval: 10s
timeout: 5s
retries: 5
validator2:
image: hyperledger/besu:24.6.0
container_name: jcc-validator-2
hostname: validator2
restart: unless-stopped
networks:
- jcc-devnet
ports:
- "8547:8547"
- "8548:8548"
- "9546:9546"
- "30304:30303" # P2P
volumes:
- ./validator-keys/validator2:/opt/besu/keys
- ./besu-config/genesis.json:/opt/besu/genesis.json:ro
- ./besu-config/static-nodes.json:/opt/besu/static-nodes.json:ro
- besu-data-2:/opt/besu/data
environment:
- BESU_DATA_PATH=/opt/besu/data
- BESU_GENESIS_FILE=/opt/besu/genesis.json
command:
- --genesis-file=/opt/besu/genesis.json
- --data-path=/opt/besu/data
- --node-private-key-file=/opt/besu/keys/key
- --static-nodes-file=/opt/besu/static-nodes.json
- --rpc-http-enabled
- --rpc-http-api=ETH,NET,IBFT,WEB3,ADMIN
- --rpc-http-port=8547
- --rpc-http-host=0.0.0.0
- --rpc-http-cors-origins=*
- --rpc-ws-enabled
- --rpc-ws-api=ETH,NET,IBFT,WEB3
- --rpc-ws-port=8548
- --rpc-ws-host=0.0.0.0
- --host-allowlist=*
- --metrics-enabled
- --metrics-port=9546
- --metrics-host=0.0.0.0
- --min-gas-price=0
- --sync-mode=FULL
- --discovery-enabled=false
- --p2p-enabled=true
- --p2p-port=30303
- --logging=INFO
healthcheck:
test: ["CMD-SHELL", "wget -qO- http://localhost:8547 2>/dev/null || exit 1"]
interval: 10s
timeout: 5s
retries: 5
validator3:
image: hyperledger/besu:24.6.0
container_name: jcc-validator-3
hostname: validator3
restart: unless-stopped
networks:
- jcc-devnet
ports:
- "8549:8549"
- "8550:8550"
- "9547:9547"
- "30305:30303" # P2P
volumes:
- ./validator-keys/validator3:/opt/besu/keys
- ./besu-config/genesis.json:/opt/besu/genesis.json:ro
- ./besu-config/static-nodes.json:/opt/besu/static-nodes.json:ro
- besu-data-3:/opt/besu/data
environment:
- BESU_DATA_PATH=/opt/besu/data
- BESU_GENESIS_FILE=/opt/besu/genesis.json
command:
- --genesis-file=/opt/besu/genesis.json
- --data-path=/opt/besu/data
- --node-private-key-file=/opt/besu/keys/key
- --static-nodes-file=/opt/besu/static-nodes.json
- --rpc-http-enabled
- --rpc-http-api=ETH,NET,IBFT,WEB3,ADMIN
- --rpc-http-port=8549
- --rpc-http-host=0.0.0.0
- --rpc-http-cors-origins=*
- --rpc-ws-enabled
- --rpc-ws-api=ETH,NET,IBFT,WEB3
- --rpc-ws-port=8550
- --rpc-ws-host=0.0.0.0
- --host-allowlist=*
- --metrics-enabled
- --metrics-port=9547
- --metrics-host=0.0.0.0
- --min-gas-price=0
- --sync-mode=FULL
- --discovery-enabled=false
- --p2p-enabled=true
- --p2p-port=30303
- --logging=INFO
healthcheck:
test: ["CMD-SHELL", "wget -qO- http://localhost:8549 2>/dev/null || exit 1"]
interval: 10s
timeout: 5s
retries: 5
prometheus:
image: prom/prometheus:v2.53.0
container_name: jcc-prometheus
networks:
- jcc-devnet
ports:
- "9090:9090"
volumes:
- ../monitoring/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml:ro
- prometheus-data:/prometheus
command:
- --config.file=/etc/prometheus/prometheus.yml
- --storage.tsdb.path=/prometheus
- --web.enable-lifecycle
grafana:
image: grafana/grafana:10.4.3
container_name: jcc-grafana
networks:
- jcc-devnet
ports:
- "3000:3000"
volumes:
- ../monitoring/grafana/dashboards:/var/lib/grafana/dashboards:ro
- ../monitoring/grafana/provisioning:/etc/grafana/provisioning:ro
- grafana-data:/var/lib/grafana
environment:
- GF_SECURITY_ADMIN_USER=admin
- GF_SECURITY_ADMIN_PASSWORD=admin
volumes:
besu-data-1:
besu-data-2:
besu-data-3:
prometheus-data:
grafana-data:
networks:
jcc-devnet:
name: jcc-devnet
driver: bridge