在本地部署多个相互隔离的 Fabric-samples
版本:Fabric v2.5.10
第一步
修改 fabric-samples\test-network\compose\compose-test-net.yaml
注释掉网络的 name
networks:
test:
# name: fabric_test
注释掉 orderer 名称
services:
orderer.example.com:
# container_name: orderer.example.com
将 peer 节点的 container_name 修改为以下内容:
peer0.org1.example.com:
# container_name: peer0.org1.example.com
container_name: ${COMPOSE_PROJECT_NAME}_peer0.org1.example.com
image: hyperledger/fabric-peer:latest
......
peer0.org2.example.com:
# container_name: peer0.org2.example.com
container_name: ${COMPOSE_PROJECT_NAME}_peer0.org2.example.com
image: hyperledger/fabric-peer:latest
修改所有的端口映射:
原来是:
ports:
- 7050:7050
- 7053:7053
- 9443:9443
......
ports:
- 7051:7051
- 9444:9444
......
ports:
- 9051:9051
- 9445:9445
修改为:
ports:
- 17050:7050
- 17053:7053
- 19443:9443
......
ports:
- 17051:7051
- 19444:9444
......
ports:
- 19051:9051
- 19445:9445
第二步
修改 fabric-samples\test-network\compose\docker\docker-compose-test-net.yaml 文件
services:
peer0.org1.example.com:
# container_name: peer0.org1.example.com
container_name: ${COMPOSE_PROJECT_NAME}_peer0.org1.example.com
......
peer0.org2.example.com:
# container_name: peer0.org2.example.com
container_name: ${COMPOSE_PROJECT_NAME}_peer0.org2.example.com
image: hyperledger/fabric-peer:latest
第三步
修改 fabric-samples\test-network\scripts\envVar.sh 文件的 PEER 变量
parsePeerConnectionParameters() {
PEER_CONN_PARMS=()
PEERS=""
while [ "$#" -gt 0 ]; do
setGlobals $1
PEER="scheme1_peer0.org$1"
scheme1 为你想要修改的名称,但需要注意以前后一致
第四步
批量替换端口
find scripts/ -type f -name "*.sh" -exec sed -i 's/localhost:7050/localhost:17050/g' {} +
find scripts/ -type f -name "*.sh" -exec sed -i 's/localhost:7053/localhost:17053/g' {} +
find scripts/ -type f -name "*.sh" -exec sed -i 's/localhost:7051/localhost:17051/g' {} +
find scripts/ -type f -name "*.sh" -exec sed -i 's/localhost:9051/localhost:19051/g' {} +
也可以替换为 27...、37...、47...
第五步
启动
COMPOSE_PROJECT_NAME=scheme1 ./network.sh up # 启动网络
COMPOSE_PROJECT_NAME=scheme1 ./network.sh down # 关闭网络
COMPOSE_PROJECT_NAME=scheme1 ./network.sh createChannel -c mychannel # 启动网络并创建通道
其中 scheme1 可以自行更换