基于docker的 Hyperledger Fabric 多机环境搭建(下)

Docker环境部署见上一篇博客:http://www.cnblogs.com/cnblogs-wangzhipeng/p/6994541.html。

我们部署分布式容器服务后就要在上面部署Fabric网络,这时候我们的Fabric-sdk-node 就派上用场了,选择orderer节点所在的主机进行fabric-sdk-node部署,不过在部署环境之前我们要先安装一些额外的nodejs包:

Fabric-sdk-node部署

1>先安装nodejs (目前Fabric要求的版本是6.9.x的版本),再安装npm(nodejs包的管理工具。)

2> 执行命令 code bash:

cd $fabric-sdk-node 

npm install #这里面注意,最好是准备个梯子,否则极大概率安装不成功,或者用cpm代替 npm(推荐)

3>对sdk进行测试

npm install gulp

gulp ca

gulp test-headless

所有测试都跑过才算ok

4>整体测试

cd  test/fixtures/

docker-compose up --force-recreate

此时单机模拟环境已经启动

cd $fabric-sdk-node

gulp test

所有测试都跑过才算ok

参考网址:https://github.com/luckydogchina/fabric-sdk-node/blob/v1.0.0-alpha.1/README.md

以上都ok了说明,你的fabric-sdk-node sdk没有问题。

 

Fabric网络部署

方法一:

1>启动分布式环境:

这个具体操作见上一篇博客,我将fabric-sdk-node 和 fabric orderer以及Org1、Couhdb节点部署在了 主机192.168.1.104上,Org2部署在了主机192.168.1.121上。

2> 我们要对Fabric-sdk-node的代码进行一下修改:

$fabric-sdk-node/test/integration/e2e/joinchannel.js

 

var Client = require('fabric-client');
var EventHub = require('fabric-client/lib/EventHub.js');
var Block = require('fabric-client/lib/Block.js');

var grpc = require('grpc');
var _commonProto = grpc.load(path.join(__dirname, '../../../fabric-client/lib/protos/common/common.proto')).common;
var _configtxProto = grpc.load(path.join(__dirname, '../../../fabric-client/lib/protos/common/configtx.proto')).common;

var testUtil = require('../../unit/util.js');

var the_user = null;
var tx_id = null;
var nonce = null;

Client.addConfigFile(path.join(__dirname, './config.json'));
var ORGS = Client.getConfigSetting('test-network');
//此处添加以下两行,192。168.1.121是另一个主机的ip,修改时请替换为实际主机的ip
ORGS.org2.peer1.requests = "grpcs://192.168.1.121:7051"
ORGS.org2.peer1.events = "grpcs://192.168.1.121:7053"

var allEventhubs = [];

//

 

$fabric-sdk-node/test/integration/e2e/e2eUtils.js

var hfc = require('fabric-client');
var EventHub = require('fabric-client/lib/EventHub.js');
var testUtil = require('../../unit/util.js');

var e2e = testUtil.END2END;
hfc.addConfigFile(path.join(__dirname, './config.json'));
var ORGS = hfc.getConfigSetting('test-network');

//添加以下代码,192.168.1.121为另一个主机的地址,请根据实际情况进行替换
ORGS.org2.peer1.requests = "grpcs://192.168.1.121:7051"
ORGS.org2.peer1.events = "grpcs://192.168.1.121:7053"

var tx_id = null;
var nonce = null;
var the_user = null;

修改后按如下顺序执行js脚本:

$fabric-sdk-node/test/integration/e2e/create-channel.js

$fabric-sdk-node/test/integration/e2e/join-channel.js

$fabric-sdk-node/test/integration/e2e/install-chaincode.js

$fabric-sdk-node/test/integration/e2e/instantiate-chaincode.js

如果都执行通过了,那么fabric的的网络搭建和chaincode安装部署就已经完成。

 

利用Fbaric网络执行交易

 与上面的修改类似,也是将容器所在的地址,替换成对应的地址(主机ip:本地映射端口号)。执行invoke-chaincode.js 和query-chaincode.js,就可进行交易。

 

方法二:

除了上面的修改方法之外,还有一个最简单实用的方法,修改工程的配置文件:

 

 把里面grpcs 的地址修改成容器对应的地址(具体端口是由docker-compose中的配置文件决定的,id是宿主机的本地ip):

 

posted @ 2017-06-16 17:59  王的博客  阅读(1930)  评论(0编辑  收藏  举报