# ============================================================ # Genex Blockchain Stack — Docker Compose # # 包含: # - genex-node-1/2/3: 3个创世验证节点 # - genex-inst-1/2: 2个机构验证节点 # - genex-regulatory: 1个监管只读节点 # - contract-deployer: 智能合约部署任务 # # 启动: # docker compose up -d # # 仅启动单节点开发模式: # docker compose up genex-node-1 -d # # 部署合约: # docker compose run contract-deployer # ============================================================ version: "3.9" x-genex-node: &genex-node-defaults build: context: ./genex-chain dockerfile: Dockerfile restart: unless-stopped networks: - genex-net services: # ============================================= # Genesis Validator Node 1 (Primary, US-East) # ============================================= genex-node-1: <<: *genex-node-defaults container_name: genex-us-east-1 hostname: genex-us-east-1 environment: - MONIKER=genex-us-east-1 - CHAIN_ID=genex-testnet-1 - NODE_TYPE=genesis ports: - "26656:26656" # P2P - "26657:26657" # CometBFT RPC - "8545:8545" # EVM JSON-RPC - "8546:8546" # EVM WebSocket - "1317:1317" # Cosmos REST API - "9090:9090" # gRPC volumes: - node1-data:/home/genex/.genexd # ============================================= # Genesis Validator Node 2 (US-West) # ============================================= genex-node-2: <<: *genex-node-defaults container_name: genex-us-west-1 hostname: genex-us-west-1 environment: - MONIKER=genex-us-west-1 - CHAIN_ID=genex-testnet-1 - NODE_TYPE=genesis - PERSISTENT_PEERS=genex-us-east-1:26656 ports: - "26666:26656" - "26667:26657" - "8555:8545" volumes: - node2-data:/home/genex/.genexd depends_on: - genex-node-1 # ============================================= # Genesis Validator Node 3 (Singapore) # ============================================= genex-node-3: <<: *genex-node-defaults container_name: genex-sg-1 hostname: genex-sg-1 environment: - MONIKER=genex-sg-1 - CHAIN_ID=genex-testnet-1 - NODE_TYPE=genesis - PERSISTENT_PEERS=genex-us-east-1:26656,genex-us-west-1:26656 ports: - "26676:26656" - "26677:26657" - "8565:8545" volumes: - node3-data:/home/genex/.genexd depends_on: - genex-node-1 # ============================================= # Institution Validator Node 1 # ============================================= genex-inst-1: <<: *genex-node-defaults container_name: genex-inst-1 hostname: genex-inst-1 environment: - MONIKER=genex-inst-1 - CHAIN_ID=genex-testnet-1 - NODE_TYPE=institution - PERSISTENT_PEERS=genex-us-east-1:26656,genex-sg-1:26656 ports: - "26686:26656" - "26687:26657" - "8575:8545" volumes: - inst1-data:/home/genex/.genexd depends_on: - genex-node-1 - genex-node-3 # ============================================= # Institution Validator Node 2 # ============================================= genex-inst-2: <<: *genex-node-defaults container_name: genex-inst-2 hostname: genex-inst-2 environment: - MONIKER=genex-inst-2 - CHAIN_ID=genex-testnet-1 - NODE_TYPE=institution - PERSISTENT_PEERS=genex-us-east-1:26656,genex-inst-1:26656 ports: - "26696:26656" - "26697:26657" - "8585:8545" volumes: - inst2-data:/home/genex/.genexd depends_on: - genex-node-1 # ============================================= # Regulatory Observer Node (Read-Only) # ============================================= genex-regulatory: <<: *genex-node-defaults container_name: genex-regulatory-1 hostname: genex-regulatory-1 environment: - MONIKER=genex-regulatory-1 - CHAIN_ID=genex-testnet-1 - NODE_TYPE=regulatory - PERSISTENT_PEERS=genex-us-east-1:26656,genex-sg-1:26656 ports: - "26706:26656" - "26707:26657" - "8595:8545" volumes: - regulatory-data:/home/genex/.genexd depends_on: - genex-node-1 # ============================================= # Smart Contract Deployer (one-shot job) # ============================================= contract-deployer: build: context: ./genex-contracts dockerfile: Dockerfile container_name: genex-contract-deployer environment: - RPC_URL=http://genex-node-1:8545 - DEPLOYER_PRIVATE_KEY=${DEPLOYER_PRIVATE_KEY:-} - USDC_ADDRESS=${USDC_ADDRESS:-} - FEE_COLLECTOR=${FEE_COLLECTOR:-} networks: - genex-net depends_on: - genex-node-1 profiles: - deploy volumes: node1-data: node2-data: node3-data: inst1-data: inst2-data: regulatory-data: networks: genex-net: driver: bridge ipam: config: - subnet: 172.28.0.0/16