主机下hfc和本机docker节点联调

fabric的starter-kit确实是快速搭建和认识fabric的途径,但开发人员更关注的其实是hfc。starter-kit的介绍和hfc的介绍脱节了。
本篇要实现的是:主机的hfc通过grpc与本机docker下的node交互

参考文档:

  • Chaincode的开发环境建立[我走的Option 2 ,Not Vagrant]
  • hfc开发环境建立
    [注意:这篇讲到的fabric network在第一部分已经完成了,starter-kit与示例的app.js不搭调,按我的文档会更顺利]

Chaincode的开发环境搭建

这一步的目标是:在docker下运行一个member节点提供用户注册服务,运行一个 peer节点提供chaincode调试服务。

用docker镜像启动节点

这一部分按照上面的文档做就好,附上docker-compose.yml内容:

membersrvc:
  image: hyperledger/fabric-membersrvc
  ports:
    - "7054:7054"
  command: membersrvc
vp0:
  image: hyperledger/fabric-peer
  ports:
    - "7050:7050"
    - "7051:7051"
    - "7053:7053"
  environment:
    - CORE_PEER_ADDRESSAUTODETECT=true
    - CORE_VM_ENDPOINT=unix:///var/run/docker.sock
    - CORE_LOGGING_LEVEL=DEBUG
    - CORE_PEER_ID=vp0
    - CORE_PEER_PKI_ECA_PADDR=membersrvc:7054
    - CORE_PEER_PKI_TCA_PADDR=membersrvc:7054
    - CORE_PEER_PKI_TLSCA_PADDR=membersrvc:7054
    - CORE_SECURITY_ENABLED=true
    - CORE_SECURITY_ENROLLID=test_vp0
    - CORE_SECURITY_ENROLLSECRET=MwYpmSRjupbT
  links:
    - membersrvc
  command: sh -c "sleep 5; peer node start --peer-chaincodedev"

编译和运行chaincode

仍然按照文档做就好,主要做了几件事:

  1. 安装go执行环境,mac下我的GOPATH环境变量是自己手工设置的;
  2. 下载相关代码;
  3. 编译和运行chaincode;(运行起来之后,其实处于等待被invoke状态)
主机下hfc和本机docker节点联调_第1张图片
编译和运行chaincode

验证节点

搭建完成之后docker-compose up 启动节点,
然后用Rest API进行验证,我用的Postman。

主机下hfc和本机docker节点联调_第2张图片
Rest API验证

也可以用Rest API去deployinvoke上面的chaincode试试。

hfc的开发环境搭建

上面的工作结果:我们已经可以通过Rest API方式deployinvoke chaincode,下面我们要用hfc提供的grpc方式代替Rest API方式做同样的事。

  • 安装nodejs
    nodejs内置了npm,安装完之后,安装hfc
  • npm install -g hfc
    其中-g表示全局可见,没有-g的话只有当前目录可见。
  • 下载和修改示例代码
curl -o app.js https://raw.githubusercontent.com/hyperledger/fabric/master/examples/sdk/node/web-app.js

这个示例代码,依赖3个外部传入的环境变量,docker下是通过docker-compose.yml设置和传入的,为了省事,我们直接赋值:

//var PEER_ADDRESS         = process.env.CORE_PEER_ADDRESS;
//var MEMBERSRVC_ADDRESS   = process.env.MEMBERSRVC_ADDRESS;
var PEER_ADDRESS         = "localhost:7051";
var MEMBERSRVC_ADDRESS   = "localhost:7054";
...
//var mode =  process.env['DEPLOY_MODE'];
var mode = 'dev';

运行hfc

在vsc下以nodejs方式运行示例程序,顺利的话,vsc调试面板会输出以下信息:

主机下hfc和本机docker节点联调_第3张图片
hfc调试输出

同时,终端下运行的chaincode也会输出被invoke的调试信息:

主机下hfc和本机docker节点联调_第4张图片
chaincode输出

你可能感兴趣的:(主机下hfc和本机docker节点联调)