求合并后一站式Docker Compose以太坊网络配置及PoS本地部署示例
合并后PoS以太坊本地网络Docker Compose配置方案
核心组件说明
合并后的PoS以太坊网络需要两类核心组件协同运行:
- 执行层(EL)客户端:负责处理交易、执行智能合约,这里选用Geth
- 共识层(CL)客户端:承担PoS共识逻辑、验证者节点管理,这里选用Lighthouse
完整Docker Compose配置
创建docker-compose.yml文件,内容如下:
version: '3.8' services: # 执行层节点(Geth) geth: image: ethereum/client-go:stable container_name: geth-local-pos command: > --dev --http --http.addr 0.0.0.0 --http.api eth,net,web3,engine --http.corsdomain "*" --ws --ws.addr 0.0.0.0 --ws.api eth,net,web3,engine --ws.origins "*" --authrpc.addr 0.0.0.0 --authrpc.vhosts "*" --authrpc.jwtsecret /root/.ethereum/jwtsecret --mine --miner.threads 1 ports: - "8545:8545" # HTTP RPC端口 - "8546:8546" # WS RPC端口 - "8551:8551" # 执行引擎API端口(连接共识层) volumes: - geth-data:/root/.ethereum - ./jwtsecret:/root/.ethereum/jwtsecret networks: - eth-pos-local # 共识层节点(Lighthouse) lighthouse: image: sigp/lighthouse:stable container_name: lighthouse-local-pos command: > beacon_node --network pyrmont --http --http-address 0.0.0.0 --execution-endpoint http://geth:8551 --execution-jwt /root/.lighthouse/jwtsecret --checkpoint-sync-url https://pyrmont.checkpoint.sigp.io --disable-deposit-contract-sync depends_on: - geth ports: - "5052:5052" # 信标节点API端口 volumes: - lighthouse-data:/root/.lighthouse - ./jwtsecret:/root/.lighthouse/jwtsecret networks: - eth-pos-local volumes: geth-data: lighthouse-data: networks: eth-pos-local: driver: bridge
部署步骤
生成JWT密钥文件:
在当前目录执行命令,生成共识层与执行层通信必需的JWT密钥:openssl rand -hex 32 > jwtsecret启动本地网络:
执行Docker Compose启动命令:docker-compose up -d验证节点运行状态:
- 查看Geth执行层日志:
docker logs -f geth-local-pos,确认出现"Started P2P networking"等成功启动标识 - 查看Lighthouse共识层日志:
docker logs -f lighthouse-local-pos,确认出现"Connected to execution engine"等连接成功标识
- 查看Geth执行层日志:
获取测试代币:
Geth的--dev模式默认生成预加载代币的测试账户,可通过以下命令查看账户地址和私钥:docker exec geth-local-pos account list
注意事项
- 资源配置:建议给Docker分配至少4GB内存,避免节点因资源不足崩溃
- 版本兼容:优先选用官方标记为
stable的镜像,确保Geth与Lighthouse版本匹配 - 端口冲突:若本地已占用8545、8551等端口,需修改
docker-compose.yml中的端口映射规则
内容的提问来源于stack exchange,提问作者DuckQueen
相关产品推荐
相关产品推荐

