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):

