HyperLedger/Fabric SDK Docker Image

该项目在github上的地址是:https://github.com/aberic/fabric-sdk-container (感谢Star)。

这是一个基于fabric-sdk-java的项目,该项目的主要目的是简化HyperLedger/Fabric开发人员在SDK应用层上的工作流程,使得开发和部署更加简单。

该项目使用方便,只需要你的服务器上部署有Docker及docker compose环境即可,通过docker-compose的启动命令启动YAML编排文件即可快速上手使用。

由于日志管理和性能调试方面的工作还未完成,目前该项目仅为1.0-alpha版本,后续的开发中将会着重处理日志及可配置性能方面的内容,如果这能让你感兴趣,欢迎star。

开发环境

  • IntelliJ IDEA
  • Maven
  • JDK-1.8
  • spring-boot
  • Docker
  • docker compose

版本说明

0.x系列的版本主要是非Docker应用方面的项目,即相互交流的源码层项目。
1.x及以上系列的版本均Docker项目,帮助开发人员快速部署SDK应用,减少开发环节,从而实现业务的快速落地。

目前主要版本如下列表所示:
v0.1:无数据库版,适合轻量级的Fabric平台应用。 
v0.2:含关系型数据库版,适合单服务管理多Fabric网络。 
v1.0-alpha:提供Docker容器服务,方便SDK快速部署。

使用sdk-container

1、确定Linux内核在3.10及以上。 
2、在待部署SDK服务器上安装最新版Dockerdocker compose环境。 
3、执行docker pull aberic/fabric-sdk下载镜像。 
4、在docker-sdk.yaml文件中配置好Fabric网络中所期望连接的排序服务及节点服务参数,这两类服务各允许设置一台,后续的版本中会增加使用SDK多服务网络方案。 
5、执行docker-compose -f docker-sdk.yaml up启动SDK镜像服务,如果不需要观察日志,则在命令最后追加-d即可。 
6、服务启动完成后,参考下面的API介绍以便更快投入使用。

API入口文档

Method REST API Description
POST /sdk/chaincode 执行、查询
POST /sdk/trace 在指定频道内根据transactionID查询区块、在指定频道内根据hash查询区块、在指定频道内根据区块高度查询区块以及查询当前频道的链信息,包括链长度、当前最新区块hash以及当前最新区块的上一区块hash
POST /sdk/org/set 设置组织信息
POST /sdk/orderer/set 设置排序服务器信息
POST /sdk/peer/set 设置节点服务器信息

该版本目前为即上即用的版本,仅提供单排序服务及单节点服务,因此API文档中未提供安装、实例化及升级操作,但在后续更新中,会支持安装、实例化及升级的功能。如果有PAAS服务的需要,可以自行参考v0.2中的方案来解决。

API方法示例

/sdk/chaincode

执行合约
{
"intent": "invoke",
"array": [
"set",
"A",
"0"
]
}
查询合约
{
"intent": "query",
"array": [
"get"
]
}

intent是指对智能合约进行操作的意图。 
array是调用合约传入的参数,在用go编写智能合约的时候,智能合约所接收的参数为一个字符串数组,其中字符串数组的第一个参数是智能合约的方法名。这里的array所传入的参数就是智能合约所接收的数组参数。

/sdk/trace

在指定频道内根据transactionID查询区块
{
"intent": "queryBlockByTransactionID",
"traceId": "08b5db91c7723cb61651a4af1034633a2833031a1cdb4415df0d8f6727020a4f"
}
在指定频道内根据hash查询区块
{
"intent": "queryBlockByHash",
"traceId": "8f63d99744752a89a49fcee560a43c271b7f12e37dfaa3489da028b610943595"
}
在指定频道内根据区块高度查询区块
{
"intent": "queryBlockByNumber",
"traceId": "9"
}
查询当前频道的链信息(包括链长度、当前最新区块hash以及当前最新区块的上一区块hash)
{
"intent": "queryBlockchainInfo"
}

/sdk/org/set

{
"id": 1,
"caLocation": "http://118.89.243.236:7054",
"caName": "ca",
"caTls": false,
"chaincodeName": "test2cc",
"chaincodePath": "chaincode/chaincode_example02",
"chaincodeSource": "/code",
"chaincodeVersion": "1.2",
"channelArtifactsDir": "/home/jar/channel-artifacts",
"channelName": "mychannel",
"cryptoConfigDir": "/home/jar/crypto-config",
"invokeWaitTime": 120,
"ordererDomainName": "example.com",
"orgDomainName": "org1.example.com",
"orgMSPID": "Org1MSP",
"orgName": "Org1",
"proposalWaitTime": 90000,
"tls": true,
"username": "Admin"
}

该方法是在sdk容器启动后根据实际需求进行调用,如YAML中配置的变量写错,可以通过该方法重新设置组织信息

/sdk/orderer/set

{
"id": 1,
"orgId": 1,
"name": "orderer.example.com",
"location": "grpc://118.89.243.236:7050"
}

该方法是在sdk容器启动后根据实际需求进行调用,如YAML中配置的变量写错,可以通过该方法重新设置排序服务信息

/sdk/peer/set

{
"id": 1,
"orgId": 1,
"peerName": "peer0.org1.example.com",
"peerEventHubName": "peer0.org1.example.com",
"peerLocation": "grpc://118.89.243.236:7051",
"peerEventHubLocation": "grpc://118.89.243.236:7053",
"isEventListener": true
}

该方法是在sdk容器启动后根据实际需求进行调用,如YAML中配置的变量写错,可以通过该方法重新设置节点服务信息

代码简要说明参考HyperLedger/Fabric JAVA-SDK with 1.1

HyperLedger/Fabric SDK使用Docker容器镜像快速部署上线的更多相关文章

  1. 运行docker容器镜像

    docker容器可以理解为在盒中运行的进程. 这个盒包含了该进程运行所必须的资源,包括文件系统.系统类库.shell 环境等等. 但这个盒默认是不会运行任何程序的. 1.运行镜像之前,可以先查看本地有 ...

  2. Docker环境 ELK 快速部署

    Docker环境 ELK快速部署 环境 Centos 7.4 , Docker version 17.12 Docker至少3GB内存: #内核配置 echo ' vm.max_map_count = ...

  3. HyperLedger Fabric 1.4 多机多节点部署(10.3)

    多机多节点指在多台电脑上部署多个组织和节点,本案例部署一个排序(orderer)服务,两个组织(org1,org2)和四个节点(peer),每个组织包括两个节点,需要五台计算机,计算机配置如下: 多机 ...

  4. Flask 教程 第十九章:Docker容器上的部署

    本文翻译自The Flask Mega-Tutorial Part XIX: Deployment on Docker Containers 这是Flask Mega-Tutorial系列的第十九部分 ...

  5. 使用VMDepot镜像快速部署CKAN开放数据门户

    最新发布的CKAN VMDepot镜像针对中国用户强化了中文支持,提升了与MS Office办公软件的互操作性,并集成了常用插件和最佳实践配置参数. 使得CKAN原本十分复杂繁琐的部署流程变得非常简单 ...

  6. Hyperledger Fabric 通道配置文件和容器环境变量详解

    摘要 Fabric 网络启动的过程中需要进行大量配置,新学时对各个配置的作用一无所知,这导致我曾在网络出问题时先对配置文件的内容进行排列组合后再祈祷它能在某个时刻顺利运行,因此掌握 fabric 各个 ...

  7. Docker容器镜像瘦身的三个小窍门(转)

    [转自:http://dockone.io/article/8174] 在构建Docker容器时,我们应尽可能减小镜像的大小.使用共享层的镜像尺寸越小,其传输和部署速度越快. 不过在每个RUN语句都会 ...

  8. [Docker]容器镜像

     1.rootfs的基础知识 Mount namespaces 隔离的是文件系统挂接点,它使每个容器能看到不同的文件系统层次结构,即每当创建一个新容器时,希望容器进程看到的文件系统时一个独立的隔离环境 ...

  9. 使用Aliyun Docker 容器镜像/注册表服务

    1.前往阿里云容器镜像服务创建相关资源. 2.登录你的仓库,账户名+公共地址 docker login --username=xxxxxxxxx@aliyun.com registry.cn-hang ...

随机推荐

  1. tidb导入大量数据报错:statement count 5001 exceeds the transaction limitation, autocommit = false

    这是Tidb数据库事务提交数量达到上限的一种报错:因为tidb是分布式的数据库,tikv使用了底层的强一致性协议.这是分布式数据库必然遇到的一个问题,我们可以调整这个值:在tidb的配置文件里面“st ...

  2. Hadoop HBase概念学习系列之META表和ROOT表(六)

    在 HBase里的HRegion 里,谈过,HRegion是按照表名+开始/结束主键,即表名+主键范围来区分的.由于主键范围是连续的,所以一般用开始主键就可以表示相应的HRegion了. 不过,因为我 ...

  3. mysql workbench中my.ini路径不一样

    mysql workbench中的my.ini路径与mysql服务中的路径不一样 删除mysql workbench的配置文件即可解决 win7下的配置文件路径: %APPDATA\MySQL\Wor ...

  4. October 18th 2017 Week 42nd Wednesday

    Only someone who is well-prepared has the opportunity to improvise. 只有准备充分的人才能够尽兴表演. From the first ...

  5. 用JS制作《飞机大作战》游戏_第1讲(素材查找和界面框架搭建)-陈远波

    一.查找素材: 二.分析游戏界面框架: 登录界面.游戏界面.暂停游戏界面.玩家死亡后弹出界面:并对应的界面包含什么元素: 三.分别搭建以上四个界面: 1.登录界面与游戏界面框架(隐藏游戏界面,四个界面 ...

  6. 13.3SolrCloud集群使用手册之Zookeeper指令

    转载请出自出处:http://www.cnblogs.com/hd3013779515/ 1.upconfig java -classpath .:/home/solr/cloud/lib/* org ...

  7. oracle 手动增加序列值

    1.select seq_name.nextval from dual; //假设得到结果5656 2.alter sequence seq_name increment by -5655; //注意 ...

  8. HTTP 请求头中的 X-Forwarded-For,X-Real-IP

     X-Forwarded-For 在使用nginx做反向代理时,我们为了记录整个的代理过程,我们往往会在配置文件中做如下配置: location / { 省略... proxy_set_header ...

  9. VC++环境下单文档SDI与OpenGL多视图分割窗口的实现-类似3DMAX的主界面

    本文主要讲述如何在VC++环境下实现单文档SDI与OpenGL多视图分割窗口,最终的界面类似3DMAX的主界面.首先给出我实现的效果图: 整个实现过程网络上有很多零散的博文,请各位自行搜索,在基于对话 ...

  10. win10家庭版安装DockerToolbox-18.03.0-ce

    下载DockerToolbox-18.03.0-ce.exe https://mirrors.aliyun.com/docker-toolbox/windows/docker-toolbox/ 点击安 ...