使用 Fabric 1.0 版本

Hyperledger Fabric 1.0 版本整體 重新設計了架構,新的設計可以實現更好的擴展性和安全性。

下載 Compose 模板文件

$ git clone https://github.com/yeasy/docker-compose-files

進入 hyperledger/1.0 目錄,查看包括若干模板文件,功能如下。

文件

功能

orderer-base.yaml

orderer 節點的基礎服務模板

peer-base.yaml

peer 節點的基礎服務模板

docker-compose-base.yaml

包含 orderer 和 peers 組織結構的基礎服務模板

docker-compose-1peer.yaml

使用自定義的 channel 啟動一個最小化的環境,包括 1 個 peer 節點、1 個 orderer 節點、1 個 CA 節點、1 個 cli 節點

docker-compose-2orgs-4peers.yaml

使用自定義的 channel 啟動一個環境,包括 4 個 peer 節點、1 個 orderer 節點、1 個 CA 節點、1 個 cli 節點

docker-compose-2orgs-4peers-couchdb.yaml

啟動一個帶有 couchdb 服務的網絡環境

docker-compose-2orgs-4peers-event.yaml

啟動一個帶有 event 事件服務的網絡環境

e2e_cli/channel-artifacts

存放創建 orderer, channel, anchor peer 操作時的配置文件

e2e_cli/crypto-config

存放 orderer 和 peer 相關證書

e2e_cli/example

用來測試的 chaincode

scripts/setup_Docker.sh

安裝並配置 dokcer 和 docker-compose

scripts/download_images.sh

下載依賴鏡像

scripts/start_fabric.sh

快速啟動一個fabric 網絡

scripts/initialize.sh

自動化測試腳本,用來初始化 channelchaincode

scripts/test_4peers.sh

自動化測試腳本,用來執行 chaincode 操作

scripts/cleanup_env.sh

容器,鏡像自動清除腳本

scripts/test_1peer.sh

測試1個peer網絡的自動化腳本

kafka/

基於kafka 的 ordering 服務

安裝 Docker 和 docker-compose

docker 及 docker-compose 可以自行手動安裝。也可以通過 hyperledger/1.0/scripts 提供的 setup_Docker.sh 腳本自動安裝。

$ bash scripts/setup_Docker.sh

獲取 Docker 鏡像

Docker 鏡像可以自行從源碼編譯(make docker),或從 DockerHub 倉庫下載。

執行腳本獲取

直接執行 hyperledger/1.0/scripts 提供的 download_images.sh 腳本獲取。

$ bash scripts/download_images.sh

從官方倉庫獲取

從社區 DockerHub 倉庫下載。

# pull fabric images
ARCH=x86_64
BASEIMAGE_RELEASE=0.3.1
BASE_VERSION=1.0.0
PROJECT_VERSION=1.0.0
IMG_TAG=1.0.0

echo "Downloading fabric images from DockerHub...with tag = ${IMG_TAG}... need a while"
# TODO: we may need some checking on pulling result?
docker pull hyperledger/fabric-peer:$ARCH-$IMG_TAG
docker pull hyperledger/fabric-orderer:$ARCH-$IMG_TAG
docker pull hyperledger/fabric-ca:$ARCH-$IMG_TAG
docker pull hyperledger/fabric-tools:$ARCH-$IMG_TAG
docker pull hyperledger/fabric-ccenv:$ARCH-$PROJECT_VERSION
docker pull hyperledger/fabric-baseimage:$ARCH-$BASEIMAGE_RELEASE
docker pull hyperledger/fabric-baseos:$ARCH-$BASEIMAGE_RELEASE

# Only useful for debugging
# docker pull yeasy/hyperledger-fabric

echo "===Re-tagging images to *latest* tag"
docker tag hyperledger/fabric-peer:$ARCH-$IMG_TAG hyperledger/fabric-peer
docker tag hyperledger/fabric-orderer:$ARCH-$IMG_TAG hyperledger/fabric-orderer
docker tag hyperledger/fabric-ca:$ARCH-$IMG_TAG hyperledger/fabric-ca
docker tag hyperledger/fabric-tools:$ARCH-$IMG_TAG hyperledger/fabric-tools

從第三方倉庫獲取

這裡也提供了調整(基於 golang:1.8 基礎鏡像製作)後的第三方鏡像,與社區版本功能是一致的。

通過如下命令拉取相關鏡像,並更新鏡像別名。

$ ARCH=x86_64
$ BASEIMAGE_RELEASE=0.3.1
$ BASE_VERSION=1.0.0
$ PROJECT_VERSION=1.0.0
$ IMG_TAG=1.0.0
$ docker pull yeasy/hyperledger-fabric-base:$IMG_VERSION \
  && docker pull yeasy/hyperledger-fabric-peer:$IMG_VERSION \
  && docker pull yeasy/hyperledger-fabric-orderer:$IMG_VERSION \
  && docker pull yeasy/hyperledger-fabric-ca:$IMG_VERSION \
  && docker pull hyperledger/fabric-couchdb:$ARCH-$IMG_VERSION \
  && docker pull hyperledger/fabric-kafka:$ARCH-$IMG_VERSION \
  && docker pull hyperledger/fabric-zookeeper:$ARCH-$IMG_VERSION

$ docker tag yeasy/hyperledger-fabric-peer:$IMG_VERSION hyperledger/fabric-peer \
  && docker tag yeasy/hyperledger-fabric-orderer:$IMG_VERSION hyperledger/fabric-orderer \
  && docker tag yeasy/hyperledger-fabric-ca:$IMG_VERSION hyperledger/fabric-ca \
  && docker tag yeasy/hyperledger-fabric-peer:$IMG_VERSION hyperledger/fabric-tools \
  && docker tag yeasy/hyperledger-fabric-base:$IMG_VERSION hyperledger/fabric-ccenv:$ARCH-$PROJECT_VERSION \
  && docker tag yeasy/hyperledger-fabric-base:$IMG_VERSION hyperledger/fabric-baseos:$ARCH-$BASEIMAGE_RELEASE \
  && docker tag yeasy/hyperledger-fabric-base:$IMG_VERSION hyperledger/fabric-baseimage:$ARCH-$BASEIMAGE_RELEASE \
  && docker tag hyperledger/fabric-couchdb:$ARCH-$IMG_VERSION hyperledger/fabric-couchdb \
  && docker tag hyperledger/fabric-zookeeper:$ARCH-$IMG_VERSION hyperledger/fabric-zookeeper \
  && docker tag hyperledger/fabric-kafka:$ARCH-$IMG_VERSION hyperledger/fabric-kafka

啟動 fabric 1.0 網絡

通過如下命令快速啟動。

$ bash scripts/start_fabric.sh

或者

$ docker-compose -f docker-compose-2orgs-4peers.yaml up

注意輸出日誌中無錯誤信息。

此時,系統中包括 7 個容器。

$ docker ps -a
CONTAINER ID        IMAGE                        COMMAND                  CREATED             STATUS              PORTS                                                                                 NAMES
8683435422ca        hyperledger/fabric-peer      "bash -c 'while true;"   19 seconds ago      Up 18 seconds       7050-7059/tcp                                                                         fabric-cli
f284c4dd26a0        hyperledger/fabric-peer      "peer node start --pe"   22 seconds ago      Up 19 seconds       7050/tcp, 0.0.0.0:7051->7051/tcp, 7052/tcp, 7054-7059/tcp, 0.0.0.0:7053->7053/tcp     peer0.org1.example.com
95fa3614f82c        hyperledger/fabric-ca        "fabric-ca-server sta"   22 seconds ago      Up 19 seconds       0.0.0.0:7054->7054/tcp                                                                fabric-ca
833ca0d8cf41        hyperledger/fabric-orderer   "orderer"                22 seconds ago      Up 19 seconds       0.0.0.0:7050->7050/tcp                                                                orderer.example.com
cd21cfff8298        hyperledger/fabric-peer      "peer node start --pe"   22 seconds ago      Up 20 seconds       7050/tcp, 7052/tcp, 7054-7059/tcp, 0.0.0.0:9051->7051/tcp, 0.0.0.0:9053->7053/tcp     peer0.org2.example.com
372b583b3059        hyperledger/fabric-peer      "peer node start --pe"   22 seconds ago      Up 20 seconds       7050/tcp, 7052/tcp, 7054-7059/tcp, 0.0.0.0:10051->7051/tcp, 0.0.0.0:10053->7053/tcp   peer1.org2.example.com
47ce30077276        hyperledger/fabric-peer      "peer node start --pe"   22 seconds ago      Up 20 seconds       7050/tcp, 7052/tcp, 7054-7059/tcp, 0.0.0.0:8051->7051/tcp, 0.0.0.0:8053->7053/tcp     peer1.org1.example.com

測試網絡

啟動 fabric 網絡後,可以進行 chaincode 操作,驗證網絡是否啟動正常。

進入到 cli 容器裡面,執行 initialize.shtest_4peers.sh 腳本。

通過如下命令進入容器 cli 並執行測試腳本。

$ docker exec -it fabric-cli bash
$ bash ./scripts/initialize.sh

注意輸出日誌無錯誤提示,最終返回結果應該為:

UTC [main] main -> INFO 00c Exiting.....
===================== Chaincode Instantiation on PEER2 on channel 'businesschannel' is successful ===================== 


===================== All GOOD, initialization completed ===================== 


 _____   _   _   ____  
| ____| | \ | | |  _ \ 
|  _|   |  \| | | | | |
| |___  | |\  | | |_| |
|_____| |_| \_| |____/

之後同樣是在 cli 容器裡執行 test_4peers.sh 腳本

$ bash ./scripts/test_4peers.sh

輸出日誌無錯誤提示,最終返回結果應該為:

Query Result: 80
UTC [main] main -> INFO 008 Exiting.....
===================== Query on PEER3 on channel 'businesschannel' is successful ===================== 

===================== All GOOD, End-2-End execution completed ===================== 


 _____   _   _   ____  
| ____| | \ | | |  _ \ 
|  _|   |  \| | | | | |
| |___  | |\  | | |_| |
|_____| |_| \_| |____/

至此,整個網絡啟動並驗證成功。

Last updated