Hyperledger Fabric 1.1在first-network的CLI容器中获取config.pb文件报错
我当初在Fabric 1.1的first-network环境里踩过这个坑,给你分享几个我亲测有效的排查和解决步骤:
确认CLI容器的环境变量配置正确
Fabric CLI需要正确的peer/orderer地址、MSP身份信息才能和节点通信。以操作Org1的peer为例,你需要在CLI容器内执行这些命令设置环境变量:export CORE_PEER_ADDRESS=peer0.org1.example.com:7051 export CORE_PEER_LOCALMSPID="Org1MSP" export CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp如果是操作Org2的peer,记得把对应的地址和MSP信息替换成Org2的。
检查
peer channel fetch config命令的正确性
Fabric 1.1中获取config.pb的标准命令需要指定orderer地址、通道名,并且因为first-network默认开启TLS,必须带上TLS相关参数:peer channel fetch config config.pb -o orderer.example.com:7050 -c mychannel --tls --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem重点注意:
-o参数必须指向正常运行的orderer节点地址-c后面是你的通道名,first-network默认是mychannel--tls和--cafile不能省略,否则会因TLS验证失败导致无法连接orderer
验证orderer和peer节点状态
在宿主机上执行docker ps,确认orderer.example.com、peer0.org1.example.com这些节点容器都处于运行状态。如果有节点没启动,先重新执行./byfn.sh up拉起整个first-network环境。检查网络连通性
在CLI容器内尝试ping orderer节点:ping orderer.example.com如果无法解析或连通,说明CLI容器不在first-network的docker网络(默认是
net_byfn)中,可以先退出CLI容器,重新用正确的网络进入:docker exec -it -e "CORE_PEER_LOCALMSPID=Org1MSP" -e "CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp" cli bash确认MSP配置文件权限和路径
检查CORE_PEER_MSPCONFIGPATH指向的路径是否存在,并且CLI用户有读取权限。如果路径写错,会导致身份验证失败,进而无法获取配置文件。
如果你按照上面的步骤排查后还是有问题,可以把执行命令时的完整报错信息贴出来,这样能更精准定位问题。
内容的提问来源于stack exchange,提问作者Shalabh Negi

