1. 目标
把 fabric 官方示例中的 e2e 跑通,跑通之后我们可以对 fabric 有一个大概的了解,也说明 fabric 基础环境已经没问题了,便于之后的实践。
2. 准备环境
我当前的环境:
centos7
go1.9.7 linux/amd64
docker 18.03.1-ce
docker-compose 1.22.0-rc1
git 1.8.3.1
3. 下载 fabric 源码
git clone -b release-1.1 https://github.com/hyperledger/fabric.git
放到 $GOPATH/src
目录下:
mkdir -p $GOPATH/src/github.com/hyperledger/fabric
然后把 git 下载的 fabric 目录下的内容全部拷贝到新建的这个目录。
4. 下载 docker images
下载以下镜像,并标记为last:
docker pull hyperledger/fabric-peer:1.1.0
docker tag hyperledger/fabric-peer:1.1.0 hyperledger/fabric-peer
docker pull hyperledger/fabric-orderer:1.1.0
docker tag hyperledger/fabric-orderer:1.1.0 hyperledger/fabric-orderer
docker pull hyperledger/fabric-ca:1.1.0
docker tag hyperledger/fabric-ca:1.1.0 hyperledger/fabric-ca
docker pull hyperledger/fabric-couchdb
docker pull hyperledger/fabric-ccenv:1.1.0
docker tag hyperledger/fabric-ccenv:1.1.0 hyperledger/fabric-ccenv
docker pull hyperledger/fabric-javaenv:x86_64-1.1.0
docker tag hyperledger/fabric-javaenv:x86_64-1.1.0 hyperledger/fabric-vccenvjavaenv
docker pull hyperledger/fabric-kafka
docker pull hyperledger/fabric-zookeeper
docker pull hyperledger/fabric-tools:1.1.0
docker tag hyperledger/fabric-tools:1.1.0 hyperledger/fabric-tools
docker pull hyperledger/fabric-baseimage
docker pull hyperledger/fabric-baseos
5. 下载平台命令文件
查看平台信息:
echo "$(uname -s|tr '[:upper:]' '[:lower:]'|sed 's/mingw64_nt.*/windows/')-$(uname -m | sed 's/x86_64/amd64/g')" | awk '{print tolower($0)}'
我得到的返回结果:
linux-amd64
根据得到平台信息和版本,可以拼成下载地址:
https://nexus.hyperledger.org/content/repositories/releases/org/hyperledger/fabric/hyperledger-fabric/linux-amd64-1.1.0/hyperledger-fabric-linux-amd64-1.1.0.tar.gz
解压后会得到一个 bin 文件夹,其中有几个可执行文件(例如:configtxgen、cryptogen、orderer、peer,都是重要的命令),把bin路径添加到 PATH 中:
# 编辑 /etc/profile,底部添加:
export PATH=/root/fabric/bin:$PATH
其中 bin 的路径根据自己实际位置修改,然后执行:
source /etc/profile
6. 运行e2e
进入e2e示例目录:
cd $GOPATH/src/github.com/hyperledger/fabric/examples/e2e_cli/
./network_setup.sh up
遇到的问题
运行过程中报错:
Error: Error endorsing chaincode: rpc error: code = Unknown desc = error starting container: API error (404): {"message":"network e2ecli_default not found"}
意思是 e2ecli_default 这个 docker 网络没有。
查看:
docker network list
结果中有一个:
458ae5949f5a e2e_cli_default ...
查找 e2e_cli 文件夹中的所有文件,看谁在使用 e2ecli_default,在 base/peer-base.yaml
中找到了,修改为 e2e_cli_default
,然后重新启动执行:
# 清理现有容器
docker stop $(docker ps -a -q)
docker rm $(docker ps -a -q)
# 启动
./network_setup.sh up
这次正常执行完成。