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,就可進行交易。
方法二:
除了上面的修改方法之外,還有一個最簡單實用的方法,修改工程的配置檔案:
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIyZuBnL4QDNyAjNyYDMy0SNwUTOzADM3ETMzcDM3EDMy0yM2YDO3ETMvw1NwcTMwIzLcNjN2gzNxEzLcd2bsJ2Lc12bj5ycn9Gbi52YucTMwIzcldWYtl2Lc9CX6MHc0RHaiojIsJye.png)
把裡面grpcs 的位址修改成容器對應的位址(具體端口是由docker-compose中的配置檔案決定的,id是主控端的本地ip):
轉載于:https://www.cnblogs.com/cnblogs-wangzhipeng/p/7028730.html