HyperLedger Fabric学习(二)——使用Docker镜像编译Fabric(1.0.4)源码并搭建简单测试网络

简述

本文主要内容是使用docker镜像编译Fabric源码,并使用编译生成的程序构建一个只有1个Orderer、1个Peer的简单网络,以此作为后续学习的基础。
本文代码使用fabric v1.0.4、docker镜像是yeasy/hyperledger-fabric:1.0.4,我们可以从 Docker Hub上看到该镜像的信息,基于golang镜像构建,给我们安装好了编译Fabric的环境依赖、gotools等,可以给我们省不少事情。

搭建编译环境、并编译

下载Fabric源码

第一步是下载我们将要进行编译的Fabric源码。在这里说来真是觉得Fabric文档写的很详细。基本上根据文档来都能有所收获。废话少说我们通过以下命令下载源码,并将代码版本切到1.0.4

~$:git clone https://github.com/hyperledger/fabric.git
~$:cd fabric
~/fabric$:git tag
~/fabric$:git checkout v1.0.4

下载yeasy/hyperledger-fabric:1.0.4镜像

这一步没什么说的,需要强调的一点是一定要使用国内的镜像站(如阿里镜像),不然的话镜像下载超慢,你可能在这一步就直接放弃了。

docker pull yeasy/hyperledger-fabric:1.0.4

编译Fabric源代码

事实上在yeasy/hyperledger-fabric镜像当中已经给我们装好了Fabric了(在/go路径下),但我们不直接使用它提供的,而是使用我们在上边下载好的源文件编译重新生成并安装。具体步骤如下:
首先我们需要一个docker-compose配置文件,具体文件内容如下:

version: '2'

services:
  compile:
    container_name: compile
    image: yeasy/hyperledger-fabric:1.0.4    
    command: /bin/bash -c 'sleep 6000000'
    working_dir: /go/src/github.com/hyperledger/fabric
    volumes:
      - ~/bin:/go/bin
      - ~/fabric:/go/src/github.com/hyperledger/fabric     

我们将该文件命名为docker-compose-compile.yaml 并将其放在~/目录下。
启动docker镜像

~$:docker-compose -f ~/docker-compose-compile.yaml up -d

进入docker镜像并编译(以编译orderer模块为例)

~$:docker exec -it compile bash

#进入docker镜像交互界面后
root@dbb634aa44a5:/go/src/github.com/hyperledger/fabric# cd orderer
root@dbb634aa44a5:/go/src/github.com/hyperledger/fabric# go build
root@dbb634aa44a5:/go/src/github.com/hyperledger/fabric# go install

以上步骤成功的话你应该可以在镜像的/go/bin目录下看到新生成的orderer可执行程序,并且在本机~/bin目录下也可以看到编译生成的orderer文件,此外我们还需要生成peer模块,进入该peer目录go build,go install即可

以上方法主要是利用了docker数据卷的功能,我们在本地修改代码后,镜像当中可以立即看到被修改内容,只需要在镜像中重新编译就可以使修改后的代码生效。

搭建简单测试网络

生成配置文件

接下来我们搭建一个仅有一个Orderer和一个Peer的网络。
首先们们需要编译生成两个工具:cryptogen生成加密证书,configtxgen生成交易配置(详情请查看官方文档)。
这两个工具在镜像中的目录分别为/go/src/github.com/hyperledger/fabric/common/tools/cryptogen/go/src/github.com/hyperledger/fabric/common/configtx/tool/configtxgen,分别进入其中执行go build,go install 即可在镜像的/go/bin目录(对应本机的~/bin目录)下生成相应的可执行文件。
接下来我们需要准备两个配置文件。
先新建一个目录用于保存我们所有的配置文件

~$:mkdir mynet
~$:cd mynet

mynet目录下新建crypto-config.yaml这是一个生成机构加密证书的配置文件,具体内容如下


OrdererOrgs:
  - Name: Orderer
    Domain: orderer.com
    Specs:
      - Hostname: orderer0
PeerOrgs:
  - Name: Org1
    Domain: peer.com
    Template:
      Count: 1
    Users:
      Count: 1

我们可以看到其内容根据字面意思理解就是一个Orderer机构,一个Peer机构,Peer机构里有一个节点(Template.Count:1) 一个用户(Users.Count:1)

我们可以使用~/bin/cryptogen 工具来生成证书如下:

~/mynet$:~/bin/cryptogen generate --config=./crypto-config.yaml
peer.com

在当前目录下可以看到生成了一个crypto-config文件夹,里面包含两个文件夹分别是ordererOrganizations, peerOrganizations

接下来我们需要使用configtxgen生成交易的配置。需要一个配置文件configtx.yaml内容如下


Profiles:
    OneOrgsOrdererGenesis:
        Orderer:
            <<: *OrdererDefaults
            Organizations:
                - *OrdererOrg
        Consortiums:
            SampleConsortium:
                Organizations:
                    - *Org1
    OneOrgsChannel:
        Consortium: SampleConsortium
        Application:
            <<: *ApplicationDefaults
            Organizations:
                - *Org1

Organizations:
    - &OrdererOrg      
        Name: OrdererOrg
        ID: OrdererMSP      
        MSPDir: crypto-config/ordererOrganizations/orderer.com/msp
    - &Org1    
        Name: Org1MSP     
        ID: Org1MSP
        MSPDir: crypto-config/peerOrganizations/peer.com/msp
        AnchorPeers:      
            - Host: peer0.peer.com
              Port: 7051
Orderer: &OrdererDefaults
    OrdererType: solo
    Addresses:
        - orderer0.orderer.com:7050
    BatchTimeout: 2s
    BatchSize:     
        MaxMessageCount: 10      
        AbsoluteMaxBytes: 99 MB      
        PreferredMaxBytes: 512 KB
    Kafka:     
        Brokers:
            - 127.0.0.1:9092
    Organizations:
Application: &ApplicationDefaults
    Organizations:

建议查看一下官方文档。
执行如下命令

~/mynet$:export FABRIC_CFG_PATH=$PWD
~/mynet$:mkdir channel-artifacts
~/mynet$:~/bin/configtxgen -profile OneOrgsOrdererGenesis -outputBlock ./channel-artifacts/genesis.block  #产生创世块
~/mynet$:export CHANNEL_NAME=mychannel
~/mynet$:~/bin/configtxgen -profile OneOrgsChannel -outputCreateChannelTx ./channel-artifacts/channel.tx -channelID $CHANNEL_NAME  #产生channel配置
~/mynet$:~/bin/configtxgen -profile OneOrgsChannel -outputAnchorPeersUpdate ./channel-artifacts/Org1MSPanchors.tx -channelID $CHANNEL_NAME -asOrg Org1MSP #机构1 AnchorPeer配置

成功执行以上命令后会在~/mynet/channel-artifacts目录下生成以下三个文件

channel.tx
genesis.block
Org1MSPanchors.tx

启动Orderer节点

为了更深入的学习我们分别启动Orderer节点和Peer节点,首先是Orderer ,我们需要准备一个docker-compose的配置文件
内容如下

version: '2'

networks:
  my_net:


services:
  orderer0.orderer.com:
    container_name: orderer0.orderer.com
    image: yeasy/hyperledger-fabric:1.0.4
    environment:
      - ORDERER_GENERAL_LOGLEVEL=debug
      - ORDERER_GENERAL_LISTENADDRESS=0.0
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

iblks

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值