HyperLedger/Fabric SDK使用Docker容器镜像快速部署上线

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

原文地址:https://www.cnblogs.com/aberic/p/9157187.html

时间: 2024-10-27 17:44:26

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

运行docker容器镜像

docker容器可以理解为在盒中运行的进程. 这个盒包含了该进程运行所必须的资源,包括文件系统.系统类库.shell 环境等等. 但这个盒默认是不会运行任何程序的. 1.运行镜像之前,可以先查看本地有那些镜像. # docker images 2.最简单的运行镜像的命令: # docker run 镜像名称 3.查看运行中的容器: # docker ps 4.查看所有的容器镜像 # docker ps -a 5.刚开始使用 Docker ,运行完一个容器,再次运行这个容器,原来的容器内的内容已经

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

最新发布的CKAN VMDepot镜像针对中国用户强化了中文支持,提升了与MS Office办公软件的互操作性,并集成了常用插件和最佳实践配置参数. 使得CKAN原本十分复杂繁琐的部署流程变得非常简单.本指南展示了如何使用VMDepot镜像快速部署CKAN开放数据门户: 前提条件 使用VMDepot镜像部署CKAN 1. 导入CKAN镜像到您的本地帐户 2. 使用本地CKAN镜像创建虚机 3. 安装后的配置(必须完成) 创建您的第一个数据集 定制您的CKAN 前提条件 您需要一个可用的微软中国A

云计算学习路线图课件:学Docker容器怎样快速入门?

"云计算"作为未来网络甚至未来计算机行业的发展趋势,得到了广泛重视.越来越多的人想通过学习云计算收获高薪,学习云计算的过程中会接触到Docker容器,这究竟是为什么?如何快速高效的学好Docker容器.进而学好云计算呢? docker就像一个集装箱一样,里面放着自己所需要的应用程序.docker内部使用的是Linux容器技术,并且提供一个完整的文件系统,独立的网络环境. docker 和vm虚拟机的主要区别在于,vm虚拟机启动之前需要制定好资源,例如CPU,内存,硬盘等,这会占用了一些

[Docker]容器镜像

 1.rootfs的基础知识 Mount namespaces 隔离的是文件系统挂接点,它使每个容器能看到不同的文件系统层次结构,即每当创建一个新容器时,希望容器进程看到的文件系统时一个独立的隔离环境,而不是继承自宿主机的文件系统. Mount Namespace修改的是容器进程对文件系统挂载点的认知.这意味着只有在挂载操作(mount)发生之后,进程的视图才会发生改变,而在此之前,新创建的容器会直接继承宿主机的各个挂载点.因而在创建新进程时,除了声明要启用的Mount  Namespace之外

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

1.前往阿里云容器镜像服务创建相关资源. 2.登录你的仓库,账户名+公共地址 docker login --username=xxxxxxxxx@aliyun.com registry.cn-hangzhou.aliyuncs.com 3.推送镜像上Aliyun镜像注册表. docker login --username=ap2337h2v@aliyun.com registry.cn-hangzhou.aliyuncs.com docker tag [ImageId] registry.cn-

Docker容器——镜像管理,端口映射,容器互联

docker镜像的分层  Dockerfile 中的每个指令都会创建一个新的镜像层: 镜像层将会被缓存和复用: 当 Dockerfile 的指令修改了,复制的文件变化了,或者构建镜像时指定的变量不同了,对应的镜像层缓存就会失效: 某一层的镜像缓存失效之后,它之后的镜像层缓存都会失效: 镜像层是不变的,如果在某一层中添加一个文件,然后在下一层中删除它,则镜像中依然包含该文件 docker镜像 是应用发布的标准格式 可支撑一个docker容器的运行 docker镜像的创建方法 基于已有镜像创建 基于

Docker容器镜像删除

好吧,本来认为删除镜像是一件很容易的事情,但刚开始上手,还是有点百思不得其解.删着删着,发现果然很容易.分享下本人的心得: 分两种情况:那么要删除镜像,首先得删除容器,删除容器时,确保容器已停止运行:2 :删除容器和删除镜像的命令略微有点差别:删除容器(rm),删除镜像(rmi).整个过程如下: 1 查询当前镜像(docker image): 可以看到,当前镜像有nginx和tomcat.我想删除tomcat镜像,它的IMAGE ID 为:41a54fe1f79d 2 查询容器(docker p

docker容器镜像等相关文件目录迁移

迁移目的: 默认装在系统盘的,一般云服务器系统盘40G左右很容器就满了,这个时候必须做迁移了 首先记录一条清理镜像的命令 # 以下命令清除无用的镜像 docker image prune -a -f # 容器因有回滚的需求,只做手动删除!! 以下方法亲手验证可行 docker默认存储目录是/var/lib/docker,下面操作用systemctl,不用service,因为用service的话有个地方会不生效 systemctl stop docker 在大空间的磁盘上创建目录 mkdir -p

Docker 容器, 镜像, 及注册

When using Docker, a developer creates an app or service and packages it and its dependencies into a container image. An image is a static representation of the app or service and its configuration and dependencies. To run the app or service, the app