前言
接触hyperledger fabric有一段时间了,看文档搭集群写链码都做过,但要深入理解还是通过源码比较直观,遂决定部署起来。同多机器部署一样,官文对源码调试的描述较少,网上有些前辈已经写过但少有明确每一步的原因,本系列文尝试依据个人理解来描述构建fabric源码调试环境的步骤,去掉docker这层障碍,并给出思考过程。
之前有写过一篇hyperledger fabric 多机部署的教程,基于first-network示例,这次也是以它为基准,以便在遇到问题的时候更容易从官方文档找到解决方案。需要先走通first-network的搭建,有些配置项需要参考它。
官文链接:https://hyperledger-fabric.readthedocs.io/en/release-1.4/build_network.html
分析
fabric模块划分比较细,采用docker是为了简化部署,同时在官方提供的文档中也大量采用shell脚本来引导,需要先大致明确几个概念:
docker:
应用容器工具,可以将应用运行所需要的一些环境打包进去,方便移植。
docker-compose:
用来运行一组docker实例,在first-network中,有一个orderer和4个peer,还有一个cli,在dockker-compose-cli.yaml中配置了各实例的环境变量,它又依赖./base/peer-base.yaml和./base/docker-compose-base.yaml,后续配置过程将主要围绕这几个文件展开。
shell脚本:
byfn.sh 中包含了整个first-network的启动和测试,有兴趣可以阅读一下,启动debug调试的过程中可能会从中参考运行参数。
工具 & 环境 & 前提
系统:mac OS 。windows最好弄个虚拟机或双系统。
IDE: goland2019.2 下载地址 https://www.jetbrains.com/go/ 我用的
假设您已经调试好官方文档里的first-netwotk,下述描述到“cd fabric-samples“都是指该示例相关的路径,不是在fabric源码中。
代码拉取
采用release-1.4的代码(如果使用其他版本代码,可能目录结构有差异,但本文重在理解解决思路,可参照着探索)
# 提前需确保gopath已经配置好,go的安装配置这里不赘述
cd <gopath>/src/github.com/hyperledger/
git clone https://github.com/hyperledger/fabric.git
cd fabric
git checkout release-1.4
git pull
拉取完成后,用Goland -> file -> Open ->选中fabric目录打开结构如下:
工作目录准备
在工程目录下创建目录
cd fabric
mkdir work_dir && cd work_dir # 类似于fabric-samples目录,以下都参考fabric-samples的目录结构
mkdir bin