1. 程式人生 > >構建Fabric的web應用--搭建一個Fabric網路環境(二)

構建Fabric的web應用--搭建一個Fabric網路環境(二)

想知道更多區塊鏈技術開發問題,請百度【鏈客區塊鏈技術問答社群】進入

配置docker-compose.yml檔案
在 fixtures 目錄下建立一個 docker-compose.yml 檔案並編輯

$ vim docker-compose.yml

將 network下的basic 修改為 default

version: ‘2’

networks:
default:

services:

編輯 orderer 部分

orderer.kevin.kongyixueyuan.com:
image: hyperledger/fabric-orderer
container_name:

orderer.kevin.kongyixueyuan.com
environment:
- ORDERER_GENERAL_LOGLEVEL=debug
- ORDERER_GENERAL_LISTENADDRESS=0.0.0.0
- ORDERER_GENERAL_LISTENPORT=7050
- ORDERER_GENERAL_GENESISPROFILE=kongyixueyuan
- ORDERER_GENERAL_GENESISMETHOD=file
- ORDERER_GENERAL_GENESISFILE=/var/hyperledger/orderer/genesis.block
- ORDERER_GENERAL_LOCALMSPID=
kevin.kongyixueyuan.com

- ORDERER_GENERAL_LOCALMSPDIR=/var/hyperledger/orderer/msp
- ORDERER_GENERAL_TLS_ENABLED=true
- ORDERER_GENERAL_TLS_PRIVATEKEY=/var/hyperledger/orderer/tls/server.key
- ORDERER_GENERAL_TLS_CERTIFICATE=/var/hyperledger/orderer/tls/server.crt
- ORDERER_GENERAL_TLS_ROOTCAS=[/var/hyperledger/orderer/tls/ca.crt]
working_dir: /opt/gopath/src/github.com/hyperledger/fabric
command: orderer
volumes:
- ./artifacts/genesis.block:/var/hyperledger/orderer/genesis.block
- ./crypto-config/ordererOrganizations/kevin.kongyixueyuan.com/orderers/orderer.kevin.kongyixueyuan.com/msp:/var/hyperledger/orderer/msp
- ./crypto-config/ordererOrganizations/kevin.kongyixueyuan.com/orderers/orderer.kevin.kongyixueyuan.com/tls:/var/hyperledger/orderer/tls
ports:
- 7050:7050
networks:
default:
aliases:
-
orderer.kevin.kongyixueyuan.com

編輯 ca 部分

ca.org1.kevin.kongyixueyuan.com:
image: hyperledger/fabric-ca
container_name: ca.org1.kevin.kongyixueyuan.com
environment:
- FABRIC_CA_HOME=/etc/hyperledger/fabric-ca-server
- FABRIC_CA_SERVER_CA_NAME=ca.org1.kevin.kongyixueyuan.com
- FABRIC_CA_SERVER_CA_CERTFILE=/etc/hyperledger/fabric-ca-server-config/ca.org1.kevin.kongyixueyuan.com-cert.pem
- FABRIC_CA_SERVER_CA_KEYFILE=/etc/hyperledger/fabric-ca-server-config/727e69ed4a01a204cd53bf4a97c2c1cb947419504f82851f6ae563c3c96dea3a_sk
- FABRIC_CA_SERVER_TLS_ENABLED=true
- FABRIC_CA_SERVER_TLS_CERTFILE=/etc/hyperledger/fabric-ca-server-config/ca.org1.kevin.kongyixueyuan.com-cert.pem
- FABRIC_CA_SERVER_TLS_KEYFILE=/etc/hyperledger/fabric-ca-server-config/727e69ed4a01a204cd53bf4a97c2c1cb947419504f82851f6ae563c3c96dea3a_sk
ports:
- 7054:7054
command: sh -c ‘fabric-ca-server start -b admin:adminpw -d’
volumes:
- ./crypto-config/peerOrganizations/org1.kevin.kongyixueyuan.com/ca/:/etc/hyperledger/fabric-ca-server-config
networks:
default:
aliases:
- ca.org1.kevin.kongyixueyuan.com

編輯Peer部分

peer0.org1.example.com 內容如下

peer0.org1.kevin.kongyixueyuan.com:
image: hyperledger/fabric-peer
container_name: peer0.org1.kevin.kongyixueyuan.com
environment:
- CORE_VM_ENDPOINT=unix:///host/var/run/docker.sock
- CORE_VM_DOCKER_ATTACHSTDOUT=true
- CORE_LOGGING_LEVEL=DEBUG
- CORE_PEER_NETWORKID=kongyixueyuan
- CORE_PEER_PROFILE_ENABLED=true
- CORE_PEER_TLS_ENABLED=true
- CORE_PEER_TLS_CERT_FILE=/var/hyperledger/tls/server.crt
- CORE_PEER_TLS_KEY_FILE=/var/hyperledger/tls/server.key
- CORE_PEER_TLS_ROOTCERT_FILE=/var/hyperledger/tls/ca.crt
- CORE_PEER_ID=peer0.org1.kevin.kongyixueyuan.com
- CORE_PEER_ADDRESSAUTODETECT=true
- CORE_PEER_ADDRESS=peer0.org1.kevin.kongyixueyuan.com:7051
- CORE_PEER_GOSSIP_EXTERNALENDPOINT=peer0.org1.kevin.kongyixueyuan.com:7051
- CORE_PEER_GOSSIP_USELEADERELECTION=true
- CORE_PEER_GOSSIP_ORGLEADER=false
- CORE_PEER_GOSSIP_SKIPHANDSHAKE=true
- CORE_PEER_LOCALMSPID=org1.kevin.kongyixueyuan.com
- CORE_PEER_MSPCONFIGPATH=/var/hyperledger/msp
- CORE_PEER_TLS_SERVERHOSTOVERRIDE=peer0.org1.kevin.kongyixueyuan.com
working_dir: /opt/gopath/src/github.com/hyperledger/fabric/peer
command: peer node start
volumes:
- /var/run/:/host/var/run/
- ./crypto-config/peerOrganizations/org1.kevin.kongyixueyuan.com/peers/peer0.org1.kevin.kongyixueyuan.com/msp:/var/hyperledger/msp
- ./crypto-config/peerOrganizations/org1.kevin.kongyixueyuan.com/peers/peer0.org1.kevin.kongyixueyuan.com/tls:/var/hyperledger/tls
ports:
- 7051:7051
- 7053:7053
depends_on:
- orderer.kevin.kongyixueyuan.com
networks:
default:
aliases:
- peer0.org1.kevin.kongyixueyuan.com

peer1.org1.example.com 內容如下

peer1.org1.kevin.kongyixueyuan.com:
image: hyperledger/fabric-peer
container_name: peer1.org1.kevin.kongyixueyuan.com
environment:
- CORE_VM_ENDPOINT=unix:///host/var/run/docker.sock
- CORE_VM_DOCKER_ATTACHSTDOUT=true
- CORE_LOGGING_LEVEL=DEBUG
- CORE_PEER_NETWORKID=kongyixueyuan
- CORE_PEER_PROFILE_ENABLED=true
- CORE_PEER_TLS_ENABLED=true
- CORE_PEER_TLS_CERT_FILE=/var/hyperledger/tls/server.crt
- CORE_PEER_TLS_KEY_FILE=/var/hyperledger/tls/server.key
- CORE_PEER_TLS_ROOTCERT_FILE=/var/hyperledger/tls/ca.crt
- CORE_PEER_ID=peer1.org1.kevin.kongyixueyuan.com
- CORE_PEER_ADDRESSAUTODETECT=true
- CORE_PEER_ADDRESS=peer1.org1.kevin.kongyixueyuan.com:7051
- CORE_PEER_GOSSIP_EXTERNALENDPOINT=peer1.org1.kevin.kongyixueyuan.com:7051
- CORE_PEER_GOSSIP_USELEADERELECTION=true
- CORE_PEER_GOSSIP_ORGLEADER=false
- CORE_PEER_GOSSIP_SKIPHANDSHAKE=true
- CORE_PEER_LOCALMSPID=org1.kevin.kongyixueyuan.com
- CORE_PEER_MSPCONFIGPATH=/var/hyperledger/msp
- CORE_PEER_TLS_SERVERHOSTOVERRIDE=peer1.org1.kevin.kongyixueyuan.com
working_dir: /opt/gopath/src/github.com/hyperledger/fabric/peer
command: peer node start
volumes:
- /var/run/:/host/var/run/
- ./crypto-config/peerOrganizations/org1.kevin.kongyixueyuan.com/peers/peer1.org1.kevin.kongyixueyuan.com/msp:/var/hyperledger/msp
- ./crypto-config/peerOrganizations/org1.kevin.kongyixueyuan.com/peers/peer1.org1.kevin.kongyixueyuan.com/tls:/var/hyperledger/tls
ports:
- 7151:7051
- 7153:7053
depends_on:
- orderer.kevin.kongyixueyuan.com
networks:
default:
aliases:
- peer1.org1.kevin.kongyixueyuan.com

其餘可根據實際情況進行新增

2.3. 測試網路環境
為了檢查網路是否正常工作,使用docker-compose同時啟動或停止所有容器。 進入fixtures資料夾,執行:

$ cd $GOPATH/src/github.com/kongyixueyuan.com/kongyixueyuan/fixtures
$ docker-compose up

命令執行成功後,控制檯會輸出很多不同顏色的日誌(紅色不等於錯誤)

開啟一個新終端並執行:

$ docker ps

將看到:兩個peer,一個orderer和一個CA容器。 代表已成功建立了一個新的網路,可以隨SDK一起使用。 要停止網路,請返回到上一個終端,按Ctrl+C並等待所有容器都停止。

提示 :當網路成功啟動後,所有處於活動中的容器都可以訪問。 也可以檢視指定容器的詳細日誌內容。 如果想刪除這些容器,需要使用docker rm $(docker ps -aq)將其刪除 ,但在刪除容器之前需要確定其在網路環境中已不再使用。

如果在網路環境啟動過程中不想看到大量的日誌資訊,請在該啟動命令中新增引數 -d ,如下所示: docker-compose up -d 。 如果要停止網路,請務必在 docker-compose.yaml 所在的資料夾中執行命令: docker-compose stop (或 使用docker-compose down 進行清理停止所有容器)。

最後在終端2中執行如下命令關閉網路:

$ cd $GOPATH/src/github.com/kongyixueyuan.com/kongyixueyuan/fixtures
$ docker-compose down