在本地部署多个相互隔离的 Fabric-samples

18 阅读2分钟

在本地部署多个相互隔离的 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	# 启动网络并创建通道

image-20251229205716069.png

其中 scheme1 可以自行更换