Sei-Chain 项目本地节点集群的 Docker 部署指南
2025-07-10 06:30:55作者:晏闻田Solitary
概述
本文将详细介绍如何使用 Docker Compose 在本地环境中部署 Sei-Chain 项目的多节点测试网络。Sei-Chain 是一个基于 Cosmos SDK 和 Tendermint 共识的区块链项目,本部署方案通过容器化技术实现了快速搭建本地开发测试环境的能力。
核心组件分析
1. 节点服务配置
部署方案中定义了 4 个节点服务(node0-node3),每个节点具有以下关键配置:
- 平台架构:明确指定为 linux/amd64 架构
- 容器镜像:统一使用 sei-chain/localnode 镜像
- 用户权限:通过环境变量 ${USERID} 和 ${GROUPID} 动态设置
- 网络端口:每个节点暴露以下端口组:
- 26656-26658:P2P 和 RPC 通信端口
- 9090-9091:gRPC 和 REST API 端口
- 8545-8546:区块链兼容接口端口(仅 node0)
2. 环境变量配置
每个节点通过环境变量进行个性化配置:
ID
:节点唯一标识(0-3)CLUSTER_SIZE
:固定设置为 4,表示集群规模NUM_ACCOUNTS
:初始化账户数量(通过外部传入)SKIP_BUILD
:是否跳过构建步骤INVARIANT_CHECK_INTERVAL
:状态一致性检查间隔UPGRADE_VERSION_LIST
:升级版本列表
3. 数据卷映射
为了实现持久化存储和开发便利性,配置了以下数据卷映射:
- 项目主目录映射到容器内 /sei-protocol/sei-chain
- 相关依赖项目映射:
- sei-tendermint
- sei-cosmos
- sei-db
- go-blockchain
- Go 开发环境映射:
- Go 模块缓存目录
- Go 构建缓存目录
网络拓扑设计
部署方案创建了一个名为 localnet 的桥接网络,具有以下特点:
- 子网范围:192.168.10.0/24
- 每个节点分配固定 IP:
- node0: 192.168.10.10
- node1: 192.168.10.11
- node2: 192.168.10.12
- node3: 192.168.10.13
这种设计确保了节点间通信的稳定性和可预测性,便于开发和测试。
部署实践指南
准备工作
- 确保已安装 Docker 和 Docker Compose
- 设置必要的环境变量:
- USERID/GROUPID:当前用户ID和组ID
- PROJECT_HOME:项目根目录路径
- GO_PKG_PATH:Go 包路径
- GOCACHE:Go 构建缓存路径
启动集群
docker-compose up -d
节点管理
- 查看节点日志:
docker logs -f sei-node-0
- 进入节点容器:
docker exec -it sei-node-0 bash
- 停止集群:
docker-compose down
开发注意事项
-
热重载支持:由于项目代码通过数据卷映射到容器内,修改本地代码会自动反映到容器中,便于开发调试。
-
多节点协作:4个节点组成的集群可以模拟真实的网络环境,测试共识算法和网络通信。
-
区块链兼容性:node0 额外暴露了8545-8546端口,支持区块链兼容的JSON-RPC接口。
-
性能考虑:INVARIANT_CHECK_INTERVAL 环境变量可以调整状态检查频率,在性能测试时可适当调高。
常见问题解决
-
端口冲突:如果默认端口已被占用,可以修改 docker-compose.yml 中的端口映射配置。
-
权限问题:确保 USERID 和 GROUPID 环境变量正确设置为当前用户的UID和GID。
-
构建失败:首次启动时可能需要较长时间构建镜像,确保网络通畅且磁盘空间充足。
通过这套 Docker Compose 部署方案,开发者可以快速搭建 Sei-Chain 的本地测试环境,大幅提高开发效率并确保环境一致性。