這里寫目錄標題
- 前言
- 系列文章直通車
- 修改docker-compose-base.yaml檔案
- 1、明確檔案資訊
- 2、修改檔案
- 結語
前言
上次我們修改了configtx.yaml檔案,那么到這里我們也就修改的差不多了,但是還有一個檔案,這個檔案要修改的內容很多,如果手動去修改很容易出錯,那么接下來我們就來修改docker-compose-base.yaml 檔案,
系列文章直通車
| 名稱 | 鏈接 |
|---|---|
| 創建自己的區塊鏈網路 一 | 點擊此處 |
| 創建自己的區塊鏈網路 二 | 點擊此處 |
| 創建自己的區塊鏈網路 三 | 點擊此處 |
| 創建自己的區塊鏈網路 四 | 點擊此處 |
修改docker-compose-base.yaml檔案
那么現在我們便需要修改此檔案,這里要修改的地方很多,很容易出錯,所以大家在此處要小心一點,
此檔案主要指定了Orderer節點還有Peer節點的主要配置資訊,
1、明確檔案資訊
那么我們要修改它就需要知道這個檔案內容的主要作用,這個檔案內容的主要作用如下:
Orderer節點
| 名稱 | 欄位 | 作用 |
|---|---|---|
| environment | ORDERER_GENERAL_GENESISFILE | 指定在Orderer容器中初始區塊的所在路徑,由volumes中的…/channel-artifacts/genesis.block:/var/hyperledger/orderer/orderer.genesis.block指定主機到Docker的映射, |
| ORDERER_GENERAL_LOCALMSPID | 指定當前Orderer容器的唯一MSPID, | |
| ORDERER_GENERAL_LOCALMSPDIR | 指定當前Orderer容器的MSP所在路徑, | |
| ORDERER_GENERAL_TLS_ENABLED | 是否開啟TLS驗證, | |
| ORDERER_GENERAL_TLS_PRIVATEKEY | 指定私鑰所在路徑, | |
| ORDERER_GENERAL_TLS_CERTIFICAT | 指定證書所在路徑, | |
| ORDERER_GENERAL_TLS_ROOTCAS | 指定受信任的CA根證書所在路徑, | |
| working_dir | 進入容器后的默認作業目錄, | |
| volumes | 指定系統中的初始區塊組態檔、MSP、TLS目錄映射到Docker容器中的指定路徑下, | |
| ports | 指定當前節點的監聽埠, |
Peer節點容器
| 名稱 | 欄位 | 作用 |
|---|---|---|
| extends | 基本資訊來源于哪個檔案, | |
| environment | 指定容器的ID、監聽地址及埠號、本地MSPID,大體與Orderer中的environment部分相同, | |
| volumes | 將系統的msp及tls目錄映射到容器中的指定路徑下, | |
| ports | 指定當前節點的監聽埠, |
來源1
2、修改檔案
那么接下來我們便來修改此檔案,
首先先看下源檔案:
# Copyright IBM Corp. All Rights Reserved.
#
# SPDX-License-Identifier: Apache-2.0
#
version: '2'
services:
orderer.example.com:
container_name: orderer.example.com
extends:
file: peer-base.yaml
service: orderer-base
volumes:
- ../channel-artifacts/genesis.block:/var/hyperledger/orderer/orderer.genesis.block
- ../crypto-config/ordererOrganizations/example.com/orderers/orderer.example.com/msp:/var/hyperledger/orderer/msp
- ../crypto-config/ordererOrganizations/example.com/orderers/orderer.example.com/tls/:/var/hyperledger/orderer/tls
- orderer.example.com:/var/hyperledger/production/orderer
ports:
- 7050:7050
peer0.org1.example.com:
container_name: peer0.org1.example.com
extends:
file: peer-base.yaml
service: peer-base
environment:
- CORE_PEER_ID=peer0.org1.example.com
- CORE_PEER_ADDRESS=peer0.org1.example.com:7051
- CORE_PEER_LISTENADDRESS=0.0.0.0:7051
- CORE_PEER_CHAINCODEADDRESS=peer0.org1.example.com:7052
- CORE_PEER_CHAINCODELISTENADDRESS=0.0.0.0:7052
- CORE_PEER_GOSSIP_BOOTSTRAP=peer1.org1.example.com:8051
- CORE_PEER_GOSSIP_EXTERNALENDPOINT=peer0.org1.example.com:7051
- CORE_PEER_LOCALMSPID=Org1MSP
volumes:
- /var/run/:/host/var/run/
- ../crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/msp:/etc/hyperledger/fabric/msp
- ../crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls:/etc/hyperledger/fabric/tls
- peer0.org1.example.com:/var/hyperledger/production
ports:
- 7051:7051
peer1.org1.example.com:
container_name: peer1.org1.example.com
extends:
file: peer-base.yaml
service: peer-base
environment:
- CORE_PEER_ID=peer1.org1.example.com
- CORE_PEER_ADDRESS=peer1.org1.example.com:8051
- CORE_PEER_LISTENADDRESS=0.0.0.0:8051
- CORE_PEER_CHAINCODEADDRESS=peer1.org1.example.com:8052
- CORE_PEER_CHAINCODELISTENADDRESS=0.0.0.0:8052
- CORE_PEER_GOSSIP_EXTERNALENDPOINT=peer1.org1.example.com:8051
- CORE_PEER_GOSSIP_BOOTSTRAP=peer0.org1.example.com:7051
- CORE_PEER_LOCALMSPID=Org1MSP
volumes:
- /var/run/:/host/var/run/
- ../crypto-config/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/msp:/etc/hyperledger/fabric/msp
- ../crypto-config/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/tls:/etc/hyperledger/fabric/tls
- peer1.org1.example.com:/var/hyperledger/production
ports:
- 8051:8051
peer0.org2.example.com:
container_name: peer0.org2.example.com
extends:
file: peer-base.yaml
service: peer-base
environment:
- CORE_PEER_ID=peer0.org2.example.com
- CORE_PEER_ADDRESS=peer0.org2.example.com:9051
- CORE_PEER_LISTENADDRESS=0.0.0.0:9051
- CORE_PEER_CHAINCODEADDRESS=peer0.org2.example.com:9052
- CORE_PEER_CHAINCODELISTENADDRESS=0.0.0.0:9052
- CORE_PEER_GOSSIP_EXTERNALENDPOINT=peer0.org2.example.com:9051
- CORE_PEER_GOSSIP_BOOTSTRAP=peer1.org2.example.com:10051
- CORE_PEER_LOCALMSPID=Org2MSP
volumes:
- /var/run/:/host/var/run/
- ../crypto-config/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/msp:/etc/hyperledger/fabric/msp
- ../crypto-config/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls:/etc/hyperledger/fabric/tls
- peer0.org2.example.com:/var/hyperledger/production
ports:
- 9051:9051
peer1.org2.example.com:
container_name: peer1.org2.example.com
extends:
file: peer-base.yaml
service: peer-base
environment:
- CORE_PEER_ID=peer1.org2.example.com
- CORE_PEER_ADDRESS=peer1.org2.example.com:10051
- CORE_PEER_LISTENADDRESS=0.0.0.0:10051
- CORE_PEER_CHAINCODEADDRESS=peer1.org2.example.com:10052
- CORE_PEER_CHAINCODELISTENADDRESS=0.0.0.0:10052
- CORE_PEER_GOSSIP_EXTERNALENDPOINT=peer1.org2.example.com:10051
- CORE_PEER_GOSSIP_BOOTSTRAP=peer0.org2.example.com:9051
- CORE_PEER_LOCALMSPID=Org2MSP
volumes:
- /var/run/:/host/var/run/
- ../crypto-config/peerOrganizations/org2.example.com/peers/peer1.org2.example.com/msp:/etc/hyperledger/fabric/msp
- ../crypto-config/peerOrganizations/org2.example.com/peers/peer1.org2.example.com/tls:/etc/hyperledger/fabric/tls
- peer1.org2.example.com:/var/hyperledger/production
ports:
- 10051:10051
其實大家跟之前的crypto-config.yaml源檔案對比下,發現這里面有很多都是對應crypto-config.yaml,名稱還有域名,那么我們只需要照葫蘆畫瓢,把這個檔案修改的對應crypto-config.yaml檔案不就可以了嗎?那么接下來就開始修改,
當然我們不可能一個個手動去改,我們可以在Goland中選中代碼然后Ctrl+R快捷鍵來查找修改,

那么接下來我們修改過后的檔案是這樣的,我都有寫注釋的,大家對照著來就好了,
# Copyright IBM Corp. All Rights Reserved.
#
# SPDX-License-Identifier: Apache-2.0
#
version: '2'
services:
orderer.slzce.com: #crypto-config.yaml的Orderer下面的域名對應 所有的example修改為slzce
container_name: orderer.slzce.com
extends:
file: peer-base.yaml
service: orderer-base
volumes:
- ../channel-artifacts/genesis.block:/var/hyperledger/orderer/orderer.genesis.block
- ../crypto-config/ordererOrganizations/slzce.com/orderers/orderer.slzce.com/msp:/var/hyperledger/orderer/msp
# - ../crypto-config/ordererOrganizations/slzce.com/orderers/orderer.slzce.com/tls/:/var/hyperledger/orderer/tls
# TLS加密傳輸我們不需要洗掉即可
- orderer.slzce.com:/var/hyperledger/production/orderer
ports:
- 7050:7050
node1.organization1.slzce.com: # 這里需要把peer0改為node1 把org1改為organization1
container_name: node1.organization1.slzce.com
extends:
file: peer-base.yaml
service: peer-base
environment:
- CORE_PEER_ID=node1.organization1.slzce.com
- CORE_PEER_ADDRESS=node1.organization1.slzce.com:7051
- CORE_PEER_LISTENADDRESS=0.0.0.0:7051
- CORE_PEER_CHAINCODEADDRESS=node1.organization1.slzce.com:7052
- CORE_PEER_CHAINCODELISTENADDRESS=0.0.0.0:7052
- CORE_PEER_GOSSIP_BOOTSTRAP=node2.organization1.slzce.com:8051 #這里需要注意一點 node1就改成他前面一個及node1->node2 node2->node1 下同
- CORE_PEER_GOSSIP_EXTERNALENDPOINT=node1.organization1.slzce.com:7051
- CORE_PEER_LOCALMSPID=Org1MSP #這里的Org1不需要修改,因為我們沒有修改mspid 下同
volumes:
- /var/run/:/host/var/run/
- ../crypto-config/peerOrganizations/organization1.slzce.com/peers/node1.organization1.slzce.com/msp:/etc/hyperledger/fabric/msp
# - ../crypto-config/peerOrganizations/organization1.slzce.com/peers/node1.organization1.slzce.com/tls:/etc/hyperledger/fabric/tls
# TLS 洗掉
- node1.organization1.slzce.com:/var/hyperledger/production
ports:
- 7051:7051
node2.organization1.slzce.com: # 這里需要把peer1改為node2 把org1改為organization1
container_name: node2.organization1.slzce.com
extends:
file: peer-base.yaml
service: peer-base
environment:
- CORE_PEER_ID=node2.organization1.slzce.com
- CORE_PEER_ADDRESS=node2.organization1.slzce.com:8051
- CORE_PEER_LISTENADDRESS=0.0.0.0:8051
- CORE_PEER_CHAINCODEADDRESS=node2.organization1.slzce.com:8052
- CORE_PEER_CHAINCODELISTENADDRESS=0.0.0.0:8052
- CORE_PEER_GOSSIP_EXTERNALENDPOINT=node1.organization1.slzce.com:8051 #這里需要注意一點 node1就改成他前面一個及node1->node2 node2->node1 下同
- CORE_PEER_GOSSIP_BOOTSTRAP=node1.organization1.slzce.com:7051
- CORE_PEER_LOCALMSPID=Org1MSP #這里的Org1不需要修改,因為我們沒有修改mspid 下同
volumes:
- /var/run/:/host/var/run/
- ../crypto-config/peerOrganizations/organization1.slzce.com/peers/node2.organization1.slzce.com/msp:/etc/hyperledger/fabric/msp
# - ../crypto-config/peerOrganizations/organization1.slzce.com/peers/node2.organization1.slzce.com/tls:/etc/hyperledger/fabric/tls
# TLS 洗掉
- node2.organization1.slzce.com:/var/hyperledger/production
ports:
- 17051:7051
# 這里直接拷貝上面兩個 然后修改就可以了
node1.organization2.slzce.com: # 這 把把organization1改為organization2
container_name: node1.organization2.slzce.com
extends:
file: peer-base.yaml
service: peer-base
environment:
- CORE_PEER_ID=node1.organization2.slzce.com
- CORE_PEER_ADDRESS=node1.organization2.slzce.com:7051
- CORE_PEER_LISTENADDRESS=0.0.0.0:7051
- CORE_PEER_CHAINCODEADDRESS=node1.organization2.slzce.com:7052
- CORE_PEER_CHAINCODELISTENADDRESS=0.0.0.0:7052
- CORE_PEER_GOSSIP_BOOTSTRAP=node2.organization2.slzce.com:8051 #這里需要注意一點 node1就改成他前面一個及node1->node2 node2->node1 下同
- CORE_PEER_GOSSIP_EXTERNALENDPOINT=node1.organization2.slzce.com:7051
- CORE_PEER_LOCALMSPID=Org2MSP #這里的Org1不需要修改,因為我們沒有修改mspid 下同 對應organization2
volumes:
- /var/run/:/host/var/run/
- ../crypto-config/peerOrganizations/organization2.slzce.com/peers/node1.organization2.slzce.com/msp:/etc/hyperledger/fabric/msp
# - ../crypto-config/peerOrganizations/organization2.slzce.com/peers/node1.organization2.slzce.com/tls:/etc/hyperledger/fabric/tls
# TLS 洗掉
- node1.organization2.slzce.com:/var/hyperledger/production
ports:
- 27051:7051
node2.organization2.slzce.com: # 這里需要把peer1改為node2 把org1改為organization2
container_name: node2.organization2.slzce.com
extends:
file: peer-base.yaml
service: peer-base
environment:
- CORE_PEER_ID=node2.organization2.slzce.com
- CORE_PEER_ADDRESS=node2.organization2.slzce.com:8051
- CORE_PEER_LISTENADDRESS=0.0.0.0:8051
- CORE_PEER_CHAINCODEADDRESS=node2.organization2.slzce.com:8052
- CORE_PEER_CHAINCODELISTENADDRESS=0.0.0.0:8052
- CORE_PEER_GOSSIP_EXTERNALENDPOINT=node1.organization2.slzce.com:8051 #這里需要注意一點 node1就改成他前面一個及node1->node2 node2->node1 下同
- CORE_PEER_GOSSIP_BOOTSTRAP=node1.organization2.slzce.com:7051
- CORE_PEER_LOCALMSPID=Org2MSP #這里的Org1不需要修改,因為我們沒有修改mspid 下同 對應 organization2
volumes:
- /var/run/:/host/var/run/
- ../crypto-config/peerOrganizations/organization2.slzce.com/peers/node2.organization2.slzce.com/msp:/etc/hyperledger/fabric/msp
# - ../crypto-config/peerOrganizations/organization2.slzce.com/peers/node2.organization2.slzce.com/tls:/etc/hyperledger/fabric/tls
# TLS 洗掉
- node2.organization2.slzce.com:/var/hyperledger/production
ports:
- 37051:7051
# 這里直接拷貝上面兩個 然后修改就可以了
node1.organization3.slzce.com: # 這 把把organization1改為organization3
container_name: node1.organization3.slzce.com
extends:
file: peer-base.yaml
service: peer-base
environment:
- CORE_PEER_ID=node1.organization3.slzce.com
- CORE_PEER_ADDRESS=node1.organization3.slzce.com:7051
- CORE_PEER_LISTENADDRESS=0.0.0.0:7051
- CORE_PEER_CHAINCODEADDRESS=node1.organization3.slzce.com:7052
- CORE_PEER_CHAINCODELISTENADDRESS=0.0.0.0:7052
- CORE_PEER_GOSSIP_BOOTSTRAP=node2.organization3.slzce.com:8051 #這里需要注意一點 node1就改成他前面一個及node1->node2 node2->node1 下同
- CORE_PEER_GOSSIP_EXTERNALENDPOINT=node1.organization3.slzce.com:7051
- CORE_PEER_LOCALMSPID=Org3MSP #這里的Org1不需要修改,因為我們沒有修改mspid 下同 對應organization3
volumes:
- /var/run/:/host/var/run/
- ../crypto-config/peerOrganizations/organization3.slzce.com/peers/node1.organization3.slzce.com/msp:/etc/hyperledger/fabric/msp
# - ../crypto-config/peerOrganizations/organization3.slzce.com/peers/node1.organization3.slzce.com/tls:/etc/hyperledger/fabric/tls
# TLS 洗掉
- node1.organization3.slzce.com:/var/hyperledger/production
ports:
- 47051:7051
node2.organization3.slzce.com: # 這里需要把peer1改為node2 把org1改為organization3
container_name: node2.organization3.slzce.com
extends:
file: peer-base.yaml
service: peer-base
environment:
- CORE_PEER_ID=node2.organization3.slzce.com
- CORE_PEER_ADDRESS=node2.organization3.slzce.com:8051
- CORE_PEER_LISTENADDRESS=0.0.0.0:8051
- CORE_PEER_CHAINCODEADDRESS=node2.organization3.slzce.com:8052
- CORE_PEER_CHAINCODELISTENADDRESS=0.0.0.0:8052
- CORE_PEER_GOSSIP_EXTERNALENDPOINT=node1.organization3.slzce.com:8051 #這里需要注意一點 node1就改成他前面一個及node1->node2 node2->node1 下同
- CORE_PEER_GOSSIP_BOOTSTRAP=node1.organization3.slzce.com:7051
- CORE_PEER_LOCALMSPID=Org3MSP #這里的Org1不需要修改,因為我們沒有修改mspid 下同
volumes:
- /var/run/:/host/var/run/
- ../crypto-config/peerOrganizations/organization3.slzce.com/peers/node2.organization3.slzce.com/msp:/etc/hyperledger/fabric/msp
# - ../crypto-config/peerOrganizations/organization3.slzce.com/peers/node2.organization3.slzce.com/tls:/etc/hyperledger/fabric/tls
# TLS 洗掉
- node2.organization3.slzce.com:/var/hyperledger/production
ports:
- 57051:7051
# 看一下有沒有少 排列組合
# node1 node2 organization1 organization2 organization3
#一共六種 不要少了哦
# Org1Msp Org2MSP Org3MSP 都是對應configtx.yaml檔案哦
# 最后的埠那從node1.organization1.slzce.com下面的ports為7051:7051后其他的其次遞增級17051:7051->27051:7051
那么到這里我們這個組態檔就修改成功了,
那么到了這里我們的組態檔就已經修改成功了,所以后面我們就可以用命令來啟動網路了哦,是不是很期待呢?
結語
又寫完了一篇,寫這些東西真的很累,也很浪費時間,但我希望把我所學習到的東西分享出來,記錄下來,
創作不易,多多支持,

以上表格內容來源于《Hyperledger Fabric 菜鳥進階攻略》
那么到了這一步我們就可以開始修改此檔案了, ??
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/272552.html
標籤:區塊鏈
