实验第四节——启动容器(代码片段)

想学习安全的小白 想学习安全的小白     2022-12-12     572

关键词:

一、本实验所需容器介绍

  1. 一个cli端容器,通过调整cli端容器使用的证书,以不同身份来使用cli端容器
  2. 三个orderere容器——orderer0,orderer1,orderer2
  3. 四个peer容器——org1的peer0,org1的peer1,org2的peer0,org2的peer1
  4. 这八个容器运行在一个自定义的容器网络中,创建网络命令:docker network create fabric_net

二、创建cli容器

  1. 创建chaincodes目录,用于之后上传chaincode相关文件,命令:mkdir -p /home/test_fabric/chaincodes
  2. 以docker run形式创建容器,通过设置环境变量CORE_PEER_TLS_ENABLED=true开启tls,命令,
docker run --rm -it --name fabric-cli --hostname fabric-cli --network fabric_net \\
  -e CORE_PEER_ID=fabric-cli \\
  -e CORE_PEER_TLS_CERT_FILE=/etc/hyperledger/fabric/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/server.crt \\
  -e CORE_PEER_TLS_KEY_FILE=/etc/hyperledger/fabric/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/server.key \\
  -e FABRIC_LOGGING_SPEC=DEBUG \\
  -e CORE_PEER_TLS_ENABLED=true \\
  -e ORDERER_CA=/etc/hyperledger/fabric/crypto-config/ordererOrganizations/example.com/orderers/orderer0.example.com/msp/tlscacerts/tlsca.example.com-cert.pem \\
  -v /home/test_fabric/crypto-config.yaml:/etc/hyperledger/fabric/crypto-config.yaml \\
  -v /home/test_fabric/crypto-config:/etc/hyperledger/fabric/crypto-config \\
  -v /home/test_fabric/channel-artifacts:/tmp/channel-artifacts \\
  -v /home/test_fabric/configtx.yaml:/etc/hyperledger/fabric/configtx.yaml \\
  -v /home/test_fabric/chaincodes:/go/src/chaincodes \\
  yeasy/hyperledger-fabric:2.3.3 /bin/bash

三、创建orderer容器

3.1、创建orderer0容器

  1. 创建命令
docker run -it --name orderer0.example.com --hostname orderer0.example.com -p 7050:7050 --network fabric_net \\
  -e FABRIC_LOGGING_SPEC=DEBUG \\
  -e ORDERER_GENERAL_LISTENADDRESS=0.0.0.0 \\
  -e ORDERER_GENERAL_LISTENPORT=7050 \\
  -e ORDERER_GENERAL_GENESISMETHOD=file \\
  -e ORDERER_GENERAL_BOOTSTRAPFILE=/etc/hyperledger/fabric/orderer.genesis.block \\
  -e ORDERER_GENERAL_LOCALMSPID=OrdererMSP \\
  -e ORDERER_GENERAL_LOCALMSPDIR=/etc/hyperledger/fabric/msp \\
  -e ORDERER_GENERAL_LEDGERTYPE=file \\
  -e ORDERER_OPERATIONS_LISTENADDRESS=0.0.0.0:8443 \\
  -e ORDERER_METRICS_PROVIDER=prometheus \\
  -e ORDERER_GENERAL_TLS_ENABLED=true \\
  -e ORDERER_GENERAL_TLS_PRIVATEKEY=/etc/hyperledger/fabric/tls/server.key \\
  -e ORDERER_GENERAL_TLS_CERTIFICATE=/etc/hyperledger/fabric/tls/server.crt \\
  -e ORDERER_GENERAL_TLS_ROOTCAS=[/etc/hyperledger/fabric/tls/ca.crt] \\
  -e ORDERER_GENERAL_CLUSTER_CLIENTPRIVATEKEY=/etc/hyperledger/fabric/tls/server.key \\
  -e ORDERER_GENERAL_CLUSTER_CLIENTCERTIFICATE=/etc/hyperledger/fabric/tls/server.crt \\
  -e ORDERER_GENERAL_CLUSTER_ROOTCAS=[/etc/hyperledger/fabric/tls/ca.crt] \\
  -v /home/test_fabric/crypto-config/ordererOrganizations/example.com/orderers/orderer0.example.com/msp:/etc/hyperledger/fabric/msp \\
  -v /home/test_fabric/crypto-config/ordererOrganizations/example.com/orderers/orderer0.example.com/tls/:/etc/hyperledger/fabric/tls \\
  -v /home/test_fabric/channel-artifacts/orderer0.genesis.block:/etc/hyperledger/fabric/orderer.genesis.block \\
  yeasy/hyperledger-fabric-orderer:2.3.3 /bin/bash
  1. 创建后进入容器执行命令:orderer start

3.2、创建orderer1容器

  1. 创建命令
docker run -it --name orderer1.example.com --hostname orderer1.example.com -p 8050:7050 --network fabric_net\\
  -e FABRIC_LOGGING_SPEC=DEBUG \\
  -e ORDERER_GENERAL_CLUSTER_SENDBUFFERSIZE=10 \\
  -e ORDERER_GENERAL_LISTENADDRESS=0.0.0.0 \\
  -e ORDERER_GENERAL_LISTENPORT=7050 \\
  -e ORDERER_GENERAL_GENESISMETHOD=file \\
  -e ORDERER_GENERAL_BOOTSTRAPFILE=/etc/hyperledger/fabric/orderer.genesis.block \\
  -e ORDERER_GENERAL_LOCALMSPID=OrdererMSP \\
  -e ORDERER_GENERAL_LOCALMSPDIR=/etc/hyperledger/fabric/msp \\
  -e ORDERER_GENERAL_LEDGERTYPE=file \\
  -e ORDERER_OPERATIONS_LISTENADDRESS=0.0.0.0:8443 \\
  -e ORDERER_METRICS_PROVIDER=prometheus \\
  -e ORDERER_GENERAL_TLS_ENABLED=true \\
  -e ORDERER_GENERAL_TLS_PRIVATEKEY=/etc/hyperledger/fabric/tls/server.key \\
  -e ORDERER_GENERAL_TLS_CERTIFICATE=/etc/hyperledger/fabric/tls/server.crt \\
  -e ORDERER_GENERAL_TLS_ROOTCAS=[/etc/hyperledger/fabric/tls/ca.crt] \\
  -e ORDERER_GENERAL_CLUSTER_CLIENTPRIVATEKEY=/etc/hyperledger/fabric/tls/server.key \\
  -e ORDERER_GENERAL_CLUSTER_CLIENTCERTIFICATE=/etc/hyperledger/fabric/tls/server.crt \\
  -e ORDERER_GENERAL_CLUSTER_ROOTCAS=[/etc/hyperledger/fabric/tls/ca.crt] \\
  -v /home/test_fabric/crypto-config/ordererOrganizations/example.com/orderers/orderer1.example.com/msp:/etc/hyperledger/fabric/msp \\
  -v /home/test_fabric/crypto-config/ordererOrganizations/example.com/orderers/orderer1.example.com/tls/:/etc/hyperledger/fabric/tls \\
  -v /home/test_fabric/channel-artifacts/orderer1.genesis.block:/etc/hyperledger/fabric/orderer.genesis.block \\
  yeasy/hyperledger-fabric-orderer:2.3.3 /bin/bash
  1. 进入容器后执行命令:orderer start

3.3、创建orderer2容器

  1. 创建命令
docker run -it --name orderer2.example.com --hostname orderer2.example.com -p 9050:7050 --network fabric_net\\
  -e FABRIC_LOGGING_SPEC=DEBUG \\
  -e ORDERER_GENERAL_CLUSTER_SENDBUFFERSIZE=10 \\
  -e ORDERER_GENERAL_LISTENADDRESS=0.0.0.0 \\
  -e ORDERER_GENERAL_LISTENPORT=7050 \\
  -e ORDERER_GENERAL_GENESISMETHOD=file \\
  -e ORDERER_GENERAL_BOOTSTRAPFILE=/etc/hyperledger/fabric/orderer.genesis.block \\
  -e ORDERER_GENERAL_LOCALMSPID=OrdererMSP \\
  -e ORDERER_GENERAL_LOCALMSPDIR=/etc/hyperledger/fabric/msp \\
  -e ORDERER_GENERAL_LEDGERTYPE=file \\
  -e ORDERER_OPERATIONS_LISTENADDRESS=0.0.0.0:8443 \\
  -e ORDERER_METRICS_PROVIDER=prometheus \\
  -e ORDERER_GENERAL_TLS_ENABLED=true \\
  -e ORDERER_GENERAL_TLS_PRIVATEKEY=/etc/hyperledger/fabric/tls/server.key \\
  -e ORDERER_GENERAL_TLS_CERTIFICATE=/etc/hyperledger/fabric/tls/server.crt \\
  -e ORDERER_GENERAL_TLS_ROOTCAS=[/etc/hyperledger/fabric/tls/ca.crt] \\
  -e ORDERER_GENERAL_CLUSTER_CLIENTPRIVATEKEY=/etc/hyperledger/fabric/tls/server.key \\
  -e ORDERER_GENERAL_CLUSTER_CLIENTCERTIFICATE=/etc/hyperledger/fabric/tls/server.crt \\
  -e ORDERER_GENERAL_CLUSTER_ROOTCAS=[/etc/hyperledger/fabric/tls/ca.crt] \\
  -v /home/test_fabric/crypto-config/ordererOrganizations/example.com/orderers/orderer2.example.com/msp:/etc/hyperledger/fabric/msp \\
  -v /home/test_fabric/crypto-config/ordererOrganizations/example.com/orderers/orderer2.example.com/tls/:/etc/hyperledger/fabric/tls \\
  -v /home/test_fabric/channel-artifacts/orderer2.genesis.block:/etc/hyperledger/fabric/orderer.genesis.block \\
  yeasy/hyperledger-fabric-orderer:2.3.3 /bin/bash
  1. 进入容器后执行命令:orderer start

四、创建peer容器

4.1、创建org1-peer0容器

  1. 命令:
docker run -it --name peer0.org1.example.com --hostname peer0.org1.example.com -p 7051:7051 --network fabric_net \\
  -e CORE_PEER_ID=peer0.org1.example.com \\
  -e CORE_PEER_ADDRESS=peer0.org1.example.com:7051 \\
  -e CORE_PEER_CHAINCODELISTENADDRESS=peer0.org1.example.com:7052 \\
  -e CORE_PEER_GOSSIP_EXTERNALENDPOINT=peer0.org1.example.com:7051 \\
  -e CORE_PEER_LOCALMSPID=Org1MSP \\
  -e FABRIC_LOGGING_SPEC=DEBUG \\
  -e CORE_PEER_ADDRESSAUTODETECT=false \\
  -e CORE_VM_DOCKER_HOSTCONFIG_NETWORKMODE=fabric_net \\
  -e CORE_PEER_GOSSIP_USELEADERELECTION=true \\
  -e CORE_PEER_GOSSIP_ORGLEADER=false \\
  -e CORE_PEER_GOSSIP_EXTERNALENDPOINT=0.0.0.0:7051 \\
  -e CORE_OPERATIONS_LISTENADDRESS=0.0.0.0:9443 \\
  -e CORE_METRICS_PROVIDER=prometheus \\
  -e CORE_PEER_PROFILE_ENABLED=false \\
  -e CORE_PEER_TLS_ENABLED=true \\
  -e CORE_PEER_TLS_CERT_FILE=/etc/hyperledger/fabric/tls/server.crt \\
  -e CORE_PEER_TLS_KEY_FILE=/etc/hyperledger/fabric/tls/server.key \\
  -e CORE_PEER_TLS_ROOTCERT_FILE=/etc/hyperledger/fabric/tls/ca.crt \\
  -e CORE_CHAINCODE_BUILDER=hyperledger/fabric-ccenv:2.3.3 \\
  -e CORE_CHAINCODE_NODE_RUNTIME=hyperledger/fabric-nodeenv:2.3.3 \\
  -v /home/test_fabric/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/msp:/etc/hyperledger/fabric/msp \\
  -v /home/test_fabric/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls:/etc/hyperledger/fabric/tls \\
  -v /var/run/docker.sock:/var/run/docker.sock \\
  yeasy/hyperledger-fabric-peer:2.3.3 /bin/bash
  1. 进入容器执行命令:peer node start

4.2、创建org1-peer1容器

  1. 创建命令
docker run -it --name peer1.org1.example.com --hostname peer1.org1.example.com -p 8051:7051 --network fabric_net \\
  -e CORE_PEER_ID=peer1.org1.example.com \\
  -e CORE_PEER_ADDRESS=peer1.org1.example.com:7051 \\
  -e CORE_PEER_GOSSIP_EXTERNALENDPOINT=peer1.org1.example.com:7051 \\
  -e CORE_PEER_CHAINCODELISTENADDRESS=peer1.org1.example.com:7052 \\
  -e CORE_PEER_GOSSIP_BOOTSTRAP=peer0.org1.example.com:7051 \\
  -e CORE_PEER_LOCALMSPID=Org1MSP \\
  -e FABRIC_LOGGING_SPEC=DEBUG \\
  -e CORE_PEER_ADDRESSAUTODETECT=false \\
  -e CORE_VM_DOCKER_HOSTCONFIG_NETWORKMODE=fabric_net \\
  -e CORE_PEER_GOSSIP_USELEADERELECTION=true \\
  -e CORE_PEER_GOSSIP_ORGLEADER=false \\
  -e CORE_PEER_GOSSIP_EXTERNALENDPOINT=0.0.0.0:7051 \\
  -e CORE_OPERATIONS_LISTENADDRESS=0.0.0.0:9443 \\
  -e CORE_METRICS_PROVIDER=prometheus \\
  -e CORE_PEER_PROFILE_ENABLED=false \\
  -e CORE_PEER_TLS_ENABLED=true \\
  -e CORE_PEER_TLS_CERT_FILE=/etc/hyperledger/fabric/tls/server.crt \\
  -e CORE_PEER_TLS_KEY_FILE=/etc/hyperledger/fabric/tls/server.key \\
  -e CORE_PEER_TLS_ROOTCERT_FILE=/etc/hyperledger/fabric/tls/ca.crt \\
  -e CORE_CHAINCODE_BUILDER=hyperledger/fabric-ccenv:2.3.3 \\
  -e CORE_CHAINCODE_NODE_RUNTIME=hyperledger/fabric-nodeenv:2.3.3 \\
  -v /home/test_fabric/crypto-config/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/msp:/etc/hyperledger/fabric/msp \\
  -v /home/test_fabric/crypto-config/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/tls:/etc/hyperledger/fabric/tls \\
  -v /var/run/docker.sock:/var/run/docker.sock \\
  yeasy/hyperledger-fabric-peer:2.3.3 /bin/bash
  1. 进入容器执行命令:peer node start

4.3、创建org2-peer0容器

  1. 创建命令
docker run -it --name peer0.org2.example.com --hostname peer0.org2.example.com -p 9051:7051 --network fabric_net \\
  -e CORE_PEER_ID=peer0.org2.example.com \\
  -e CORE_PEER_ADDRESS=peer0.org2.example.com:7051 \\
  -e CORE_PEER_GOSSIP_EXTERNALENDPOINT=peer0.org2.example.com:7051 \\
  -e CORE_PEER_CHAINCODELISTENADDRESS=peer0.org2.example.com:7052 \\
  -e CORE_PEER_GOSSIP_BOOTSTRAP=peer0.org2.example.com:7051 \\
  -e CORE_PEER_LOCALMSPID=Org2MSP \\
  -e FABRIC_LOGGING_SPEC=DEBUG \\
  -e CORE_PEER_ADDRESSAUTODETECT=false \\
  -e CORE_VM_DOCKER_HOSTCONFIG_NETWORKMODE=fabric_net \\
  -e CORE_PEER_GOSSIP_USELEADERELECTION=true \\
  -e CORE_PEER_GOSSIP_ORGLEADER=false \\
  -e CORE_PEER_GOSSIP_EXTERNALENDPOINT=0.0.0.0:7051 \\
  -e CORE_OPERATIONS_LISTENADDRESS=0.0.0.0:9443 \\
  -e CORE_METRICS_PROVIDER=prometheus \\
  -e CORE_PEER_PROFILE_ENABLED=false \\
  -e CORE_PEER_TLS_ENABLED=true \\
  -e CORE_PEER_TLS_CERT_FILE=/etc/hyperledger/fabric/tls/server.crt \\
  -e CORE_PEER_TLS_KEY_FILE=/etc/hyperledger/fabric/tls/server.key \\
  -e CORE_PEER_TLS_ROOTCERT_FILE=/etc/hyperledger/fabric/tls/ca.crt \\
  -e CORE_CHAINCODE_BUILDER=hyperledger/fabric-ccenv:2.3.3 \\
  -e CORE_CHAINCODE_NODE_RUNTIME=hyperledger/fabric-nodeenv:2.3.3 \\
  -v /home/test_fabric/crypto-config/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/msp:/etc/hyperledger/fabric/msp \\
  -v /home/test_fabric/crypto-config/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls:/etc/hyperledger/fabric/tls \\
  -v /var/run/docker.sock:/var/run/docker.sock \\
  yeasy/hyperledger-fabric-peer:2.3.3 /bin/bash
  1. 进入容器执行命令:peer node start

4.4、创建org2-peer0容器

  1. 创建命令
docker run -it --name peer1.org2.example.com --hostname peer1.org2.example.com -p 10051:7051 --network fabric_net \\
  -e CORE_PEER_ID=peer1.org2.example.com \\
  -e CORE_PEER_ADDRESS=peer1.org2.example.com:7051 \\
  -e CORE_PEER_GOSSIP_EXTERNALENDPOINT=peer1.org2.example.com:7051 \\
  -e CORE_PEER_CHAINCODELISTENADDRESS=peer1.org2.example.com:7052 \\
  -e CORE_PEER_GOSSIP_BOOTSTRAP=peer1.org2.example.com:7051 \\
  -e CORE_PEER_LOCALMSPID=Org2MS \\
  -e FABRIC_LOGGING_SPEC=DEBUG \\
  -e CORE_PEER_ADDRESSAUTODETECT=false \\
  -e CORE_VM_DOCKER_HOSTCONFIG_NETWORKMODE=fabric_net \\
  -e CORE_PEER_GOSSIP_USELEADERELECTION=true \\
  -e CORE_PEER_GOSSIP_ORGLEADER=false \\
  -e CORE_PEER_GOSSIP_EXTERNALENDPOINT=0.0.0.0:7051 \\
  -e CORE_OPERATIONS_LISTENADDRESS=0.0.0.0:9443 \\
  -e CORE_METRICS_PROVIDER=prometheus \\
  -e CORE_PEER_PROFILE_ENABLED=false \\
  -e CORE_PEER_TLS_ENABLED=true \\
  -e CORE_PEER_TLS_CERT_FILE=/etc/hyperledger/fabric/tls/server.crt \\
  -e CORE_PEER_TLS_KEY_FILE=/etc/hyperledger/fabric/tls/server.key \\
  -e CORE_PEER_TLS_ROOTCERT_FILE=/etc/hyperledger/fabric/tls/ca.crt \\
  -e CORE_CHAINCODE_BUILDER=hyperledger/fabric-ccenv:2.3.3 \\
  -e CORE_CHAINCODE_NODE_RUNTIME=hyperledger/fabric-nodeenv:2.3.3 \\
  -v /home/test_fabric/crypto-config/peerOrganizations/org2.example.com/peers/peer1.org2.example.com/msp:/etc/hyperledger/fabric/msp \\
  -v /home/test_fabric/crypto-config/peerOrganizations/org2.example.com/peers/peer1.org2.example.com/tls:/etc/hyperledger/fabric/tls \\
  -v /var/run/docker.sock:/var/run/docker.sock \\
  yeasy/hyperledger-fabric-peer:2.3.3 /bin/bash
  1. 进入容器执行命令:peer node start

五、通过docker-compose.yaml文件启动orderer以及peer节点

  1. 因为cli容器没有阻塞语句,所以不建议使用此方法创建cli容器
  2. 先拉取相关镜像,命令
docker pull yeasy/hyperledger-fabric-orderer:2.3.3
docker pull yeasy/hyperledger-fabric-peer:2.3.3
  1. 创建docker-compose.yaml文件,命令:touch /home/test_fabric/docker-compose.yaml
  2. 使用docker-compose.yaml启动,命令:docker-compose -f /home/test_fabric/docker-compose.yaml up -d
  3. docker-compose.yaml内容
version: '3'

services:

  orderer0.example.com:  # There can be multiple orderers
    container_name: orderer0.example.com
    hostname: orderer0.example.com
    image: yeasy/hyperledger-fabric-orderer:2.3.3
    network_mode: fabric_net
    ports:
      - 7050:7050
    environment:
      - FABRIC_LOGGING_SPEC=DEBUG
      - ORDERER_GENERAL_LISTENADDRESS=0.0.0.0 # default: 127.0.0.1
      - ORDERER_GENERAL_LISTENPORT=7050
      - ORDERER_GENERAL_GENESISMETHOD=file
      - ORDERER_GENERAL_BOOTSTRAPFILE=/etc/hyperledger/fabric/orderer.genesis.block
      - ORDERER_GENERAL_LOCALMSPID=OrdererMSP
      - ORDERER_GENERAL_LOCALMSPDIR=/etc/hyperledger/fabric/msp
      - ORDERER_GENERAL_LEDGERTYPE=file
      - ORDERER_OPERATIONS_LISTENADDRESS=0.0.0.0:8443
      - ORDERER_METRICS_PROVIDER=prometheus
      - ORDERER_GENERAL_TLS_ENABLED=true
      - ORDERER_GENERAL_TLS_PRIVATEKEY=/etc/hyperledger/fabric/tls/server.key
      - ORDERER_GENERAL_TLS_CERTIFICATE=/etc/hyperledger/fabric/tls/server.crt
      - ORDERER_GENERAL_TLS_ROOTCAS=[/etc/hyperledger/fabric/tls/ca.crt]
      - ORDERER_GENERAL_CLUSTER_CLIENTPRIVATEKEY=/etc/hyperledger/fabric/tls/server.key
      - ORDERER_GENERAL_CLUSTER_CLIENTCERTIFICATE=/etc/hyperledger/fabric/tls/server.crt
      - ORDERER_GENERAL_CLUSTER_ROOTCAS=[/etc/hyperledger/fabric/tls/ca.crt]
    volumes:
      - /home/test_fabric/crypto-config/ordererOrganizations/example.com/orderers/orderer0.example.com/msp:/etc/hyperledger/fabric/msp
      - /home/test_fabric/crypto-config/ordererOrganizations/example.com/orderers/orderer0.example.com/tls/:/etc/hyperledger/fabric/tls
      - /home/test_fabric/channel-artifacts/orderer0.genesis.block:/etc/hyperledger/fabric/orderer.genesis.block
    command: orderer start

  orderer1.example.com:  # There can be multiple orderers
    container_name: orderer1.example.com
    hostname: orderer1.example.com
    image: yeasy/hyperledger-fabric-orderer:2.3.3
    network_mode: fabric_net
    ports:
      - 8050:7050
    environment:
      - ORDERER_GENERAL_CLUSTER_SENDBUFFERSIZE=10
      - FABRIC_LOGGING_SPEC=DEBUG
      - ORDERER_GENERAL_LISTENADDRESS=0.0.0.0 # default: 127.0.0.1
      - ORDERER_GENERAL_LISTENPORT=7050
      - ORDERER_GENERAL_GENESISMETHOD=file # default: provisional
      - ORDERER_GENERAL_BOOTSTRAPFILE=/etc/hyperledger/fabric/orderer.genesis.block # by default, all materials should be put under $FABRIC_CFG_PATH, which defaults to /etc/hyperledger/fabric
      - ORDERER_GENERAL_LOCALMSPID=OrdererMSP # default: DEFAULT
      - ORDERER_GENERAL_LOCALMSPDIR=/etc/hyperledger/fabric/msp
      - ORDERER_GENERAL_LEDGERTYPE=file
      - ORDERER_OPERATIONS_LISTENADDRESS=0.0.0.0:8443  # operation RESTful API
      - ORDERER_METRICS_PROVIDER=prometheus  # prometheus will pull metrics from orderer via /metrics RESTful API
      - ORDERER_GENERAL_TLS_ENABLED=true # default: false
      - ORDERER_GENERAL_TLS_PRIVATEKEY=/etc/hyperledger/fabric/tls/server.key
      - ORDERER_GENERAL_TLS_CERTIFICATE=/etc/hyperledger/fabric/tls/server.crt
      - ORDERER_GENERAL_TLS_ROOTCAS=[/etc/hyperledger/fabric/tls/ca.crt]
      - ORDERER_GENERAL_CLUSTER_CLIENTPRIVATEKEY=/etc/hyperledger/fabric/tls/server.key
      - ORDERER_GENERAL_CLUSTER_CLIENTCERTIFICATE=/etc/hyperledger/fabric/tls/server.crt
      - ORDERER_GENERAL_CLUSTER_ROOTCAS=[/etc/hyperledger/fabric/tls/ca.crt]
    volumes:
      - /home/test_fabric/crypto-config/ordererOrganizations/example.com/orderers/orderer1.example.com/msp:/etc/hyperledger/fabric/msp
      - /home/test_fabric/crypto-config/ordererOrganizations/example.com/orderers/orderer1.example.com/tls/:/etc/hyperledger/fabric/tls
      - /home/test_fabric/channel-artifacts/orderer1.genesis.block:/etc/hyperledger/fabric/orderer.genesis.block
    command: orderer start

  orderer2.example.com:  # There can be multiple orderers
    container_name: orderer2.example.com
    hostname: orderer2.example.com
    image: yeasy/hyperledger-fabric-orderer:2.3.3
    network_mode: fabric_net
    ports:
      - 9050:7050
    environment:
      - ORDERER_GENERAL_CLUSTER_SENDBUFFERSIZE=10
      - FABRIC_LOGGING_SPEC=DEBUG
      - ORDERER_GENERAL_LISTENADDRESS=0.0.0.0 # default: 127.0.0.1
      - ORDERER_GENERAL_LISTENPORT=7050
      - ORDERER_GENERAL_GENESISMETHOD=file # default: provisional
      - ORDERER_GENERAL_BOOTSTRAPFILE=/etc/hyperledger/fabric/orderer.genesis.block # by default, all materials should be put under $FABRIC_CFG_PATH, which defaults to /etc/hyperledger/fabric
      - ORDERER_GENERAL_LOCALMSPID=OrdererMSP # default: DEFAULT
      - ORDERER_GENERAL_LOCALMSPDIR=/etc/hyperledger/fabric/msp
      - ORDERER_GENERAL_LEDGERTYPE=file
      - ORDERER_OPERATIONS_LISTENADDRESS=0.0.0.0:8443  # operation RESTful API
      - ORDERER_METRICS_PROVIDER=prometheus  # prometheus will pull metrics from orderer via /metrics RESTful API
      - ORDERER_GENERAL_TLS_ENABLED=true # default: false
      - ORDERER_GENERAL_TLS_PRIVATEKEY=/etc/hyperledger/fabric/tls/server.key
      - ORDERER_GENERAL_TLS_CERTIFICATE=/etc/hyperledger/fabric/tls/server.crt
      - ORDERER_GENERAL_TLS_ROOTCAS=[/etc/hyperledger/fabric/tls/ca.crt]
      - ORDERER_GENERAL_CLUSTER_CLIENTPRIVATEKEY=/etc/hyperledger/fabric/tls/server.key
      - ORDERER_GENERAL_CLUSTER_CLIENTCERTIFICATE=/etc/hyperledger/fabric/tls/server.crt
      - ORDERER_GENERAL_CLUSTER_ROOTCAS=[/etc/hyperledger/fabric/tls/ca.crt]
    volumes:
      - /home/test_fabric/crypto-config/ordererOrganizations/example.com/orderers/orderer2.example.com/msp:/etc/hyperledger/fabric/msp
      - /home/test_fabric/crypto-config/ordererOrganizations/example.com/orderers/orderer2.example.com/tls/:/etc/hyperledger/fabric/tls
      - /home/test_fabric/channel-artifacts/orderer2.genesis.block:/etc/hyperledger/fabric/orderer.genesis.block
    command: orderer start

  peer0.org1.example.com:
    container_name: peer0.org1.example.com
    hostname: peer0.org1.example.com
    image: yeasy/hyperledger-fabric-peer:2.3.3
    network_mode: fabric_net
    ports:
      - 7051:7051
    environment:
      - CORE_PEER_ID=peer0.org1.example.com
      - CORE_PEER_ADDRESS=peer0.org1.example.com:7051
      - CORE_PEER_CHAINCODELISTENADDRESS=peer0.org1.example.com:7052
      - CORE_PEER_GOSSIP_EXTERNALENDPOINT=peer0.org1.example.com:7051
      - CORE_PEER_LOCALMSPID=Org1MSP
      - FABRIC_LOGGING_SPEC=DEBUG
      - CORE_PEER_ADDRESSAUTODETECT=false
      - CORE_VM_DOCKER_HOSTCONFIG_NETWORKMODE=fabric_net  # uncomment this to use specific network
      - CORE_PEER_GOSSIP_USELEADERELECTION=true
      - CORE_PEER_GOSSIP_ORGLEADER=false  # whether this node is the org leader, default to false
      - CORE_PEER_GOSSIP_EXTERNALENDPOINT=0.0.0.0:7051  # change to external addr for peers in other orgs
      - CORE_OPERATIONS_LISTENADDRESS=0.0.0.0:9443  # operation RESTful API
      - CORE_METRICS_PROVIDER=prometheus  # prometheus will pull metrics from fabric via /metrics RESTful API
      - CORE_PEER_PROFILE_ENABLED=false
      - CORE_PEER_TLS_ENABLED=true
      - CORE_PEER_TLS_CERT_FILE=/etc/hyperledger/fabric/tls/server.crt
      - CORE_PEER_TLS_KEY_FILE=/etc/hyperledger/fabric/tls/server.key
      - CORE_PEER_TLS_ROOTCERT_FILE=/etc/hyperledger/fabric/tls/ca.crt
      - CORE_CHAINCODE_BUILDER=hyperledger/fabric-ccenv:2.3.3
      - CORE_CHAINCODE_NODE_RUNTIME=hyperledger/fabric-nodeenv:2.3.3
    volumes:
      - /home/test_fabric/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/msp:/etc/hyperledger/fabric/msp
      - /home/test_fabric/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls:/etc/hyperledger/fabric/tls
      - /var/run/docker.sock:/var/run/docker.sock
    command: peer node start
    depends_on:
      - orderer0.example.com
      - orderer1.example.com
      - orderer2.example.com

  peer1.org1.example.com:
    container_name: peer1.org1.example.com
    hostname: peer1.org1.example.com
    image: yeasy/hyperledger-fabric-peer:2.3.3
    network_mode: fabric_net
    ports:
      - 8051:7051
    environment:
      - CORE_PEER_ID=peer1.org1.example.com
      - CORE_PEER_ADDRESS=peer1.org1.example.com:7051
      - CORE_PEER_GOSSIP_EXTERNALENDPOINT=peer1.org1.example.com:7051
      - CORE_PEER_CHAINCODELISTENADDRESS=peer1.org1.example.com:7052
      - CORE_PEER_GOSSIP_BOOTSTRAP=peer0.org1.example.com:7051
      - CORE_PEER_LOCALMSPID=Org1MSP
      - FABRIC_LOGGING_SPEC=DEBUG
      - CORE_PEER_ADDRESSAUTODETECT=false
      - CORE_VM_DOCKER_HOSTCONFIG_NETWORKMODE=fabric_net  # uncomment this to use specific network
      - CORE_PEER_GOSSIP_USELEADERELECTION=true
      - CORE_PEER_GOSSIP_ORGLEADER=false  # whether this node is the org leader, default to false
      - CORE_PEER_GOSSIP_EXTERNALENDPOINT=0.0.0.0:7051  # change to external addr for peers in other orgs
      - CORE_OPERATIONS_LISTENADDRESS=0.0.0.0:9443  # operation RESTful API
      - CORE_METRICS_PROVIDER=prometheus  # prometheus will pull metrics from fabric via /metrics RESTful API
      - CORE_PEER_PROFILE_ENABLED=false
      - CORE_PEER_TLS_ENABLED=true
      - CORE_PEER_TLS_CERT_FILE=/etc/hyperledger/fabric/tls/server.crt
      - CORE_PEER_TLS_KEY_FILE=/etc/hyperledger/fabric/tls/server.key
      - CORE_PEER_TLS_ROOTCERT_FILE=/etc/hyperledger/fabric/tls/ca.crt
      - CORE_CHAINCODE_BUILDER=hyperledger/fabric-ccenv:2.3.3
      - CORE_CHAINCODE_NODE_RUNTIME=hyperledger/fabric-nodeenv:2.3.3
    volumes:
      - /home/test_fabric/crypto-config/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/msp:/etc/hyperledger/fabric/msp
      - /home/test_fabric/crypto-config/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/tls:/etc/hyperledger/fabric/tls
      - /var/run/docker.sock:/var/run/docker.sock
    command: peer node start
    depends_on:
      - orderer0.example.com
      - orderer1.example.com
      - orderer2.example.com

  peer0.org2.example.com:
    container_name: peer0.org2.example.com
    hostname: peer0.org2.example.com
    image: yeasy/hyperledger-fabric-peer:2.3.3
    network_mode: fabric_net
    ports:
      - 9051:7051
    environment:
      - CORE_PEER_ID=peer0.org2.example.com
      - CORE_PEER_ADDRESS=peer0.org2.example.com:7051
      - CORE_PEER_GOSSIP_EXTERNALENDPOINT=peer0.org2.example.com:7051
      - CORE_PEER_CHAINCODELISTENADDRESS=peer0.org2.example.com:7052
      - CORE_PEER_GOSSIP_BOOTSTRAP=peer0.org2.example.com:7051
      - CORE_PEER_LOCALMSPID=Org2MSP
      - FABRIC_LOGGING_SPEC=DEBUG
      - CORE_PEER_ADDRESSAUTODETECT=false
      - CORE_VM_DOCKER_HOSTCONFIG_NETWORKMODE=fabric_net  # uncomment this to use specific network
      - CORE_PEER_GOSSIP_USELEADERELECTION=true
      - CORE_PEER_GOSSIP_ORGLEADER=false  # whether this node is the org leader, default to false
      - CORE_PEER_GOSSIP_EXTERNALENDPOINT=0.0.0.0:7051  # change to external addr for peers in other orgs
      - CORE_OPERATIONS_LISTENADDRESS=0.0.0.0:9443  # operation RESTful API
      - CORE_METRICS_PROVIDER=prometheus  # prometheus will pull metrics from fabric via /metrics RESTful API
      - CORE_PEER_PROFILE_ENABLED=false
      - CORE_PEER_TLS_ENABLED=true
      - CORE_PEER_TLS_CERT_FILE=/etc/hyperledger/fabric/tls/server.crt
      - CORE_PEER_TLS_KEY_FILE=/etc/hyperledger/fabric/tls/server.key
      - CORE_PEER_TLS_ROOTCERT_FILE=/etc/hyperledger/fabric/tls/ca.crt
      - CORE_CHAINCODE_BUILDER=hyperledger/fabric-ccenv:2.3.3
      - CORE_CHAINCODE_NODE_RUNTIME=hyperledger/fabric-nodeenv:2.3.3
    volumes:
        - /home/test_fabric/crypto-config/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/msp:/etc/hyperledger/fabric/msp
        - /home/test_fabric/crypto-config/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls:/etc/hyperledger/fabric/tls
        - /var/run/docker.sock:/var/run/docker.sock
    command: peer node start
    depends_on:
      - orderer0.example.com
      - orderer1.example.com
      - orderer2.example.com

  peer1.org2.example.com:
    container_name: peer1.org2.example.com
    hostname: peer1.org2.example.com
    image: yeasy/hyperledger-fabric查看详情  

cisco网络基础小实验第四节

第四章交换机划分VLAN配置本文讲述交换机VLAN问题,实验为同VLAN可通信,不同VLAN无法通信 查看详情

第四节——配置文件解释(代码片段)

一、scope解释scope的值有两个,分别是singleton和prototypesingle是默认值,表示每次从xml取出的UserDaoImpl类都是唯一一个,且类的创建时机是在创建app对象时同时创建UserDao类//测试代码ApplicationContextapp=newClassPathXmlApplicatio... 查看详情

第四节——生成go测试代码(代码片段)

第四章——在Go中生成和序列化protobuf消息4.1、创建工作文件创建一个sample包来生成一些随机的笔记本电脑数据创建sample/generator.go文件创建sample/random.go文件4.2、生成随机键盘在sample/generator.go文件中一个函数NewKeyboard(),返回... 查看详情

easyclickhtmlui第四节列表标签(代码片段)

EasyClickHtmlUI第四节列表标签列表标签的种类无序列表标签(ul标签)有序列表标签(ol标签)无序列表<!--ul标签定义无序列表--><ul><!--li标签定义列表项目--><li>列表标题一</li><li>列表标题二</li><li>列... 查看详情

第四节——数据表与约束(代码片段)

数据表的使用一、表的使用表的创建,命令:creaettable[ifnotexists]表名(列名数据类型列约束,列名数据类型列约束,......);//ifnotexists不是必须的,列约束不是必须的eg:createtableifnotexiststesttable(idintprimarykey,nametestnotnull);... 查看详情

第一章第四节helloworld程序(代码片段)

1、第一个HelloWorld程序  上节完成Java环境变量配置之后,我们就可以写第一个程序了。  首先,我们在硬盘上创建一个test.txt文件,并把test.txt文件改成后缀为.java的test.java文件,并用记事本打开,写下如下代码:  classHell... 查看详情

第四节——继承与多态(代码片段)

继承的学习一、继承的特性子类拥有父类非private的属性(成员变量,类似但不全是)、方法。子类可以拥有自己的属性和方法,即子类可以对父类进行扩展。多态的学习一、多态的概念多态:同一个对象,在不同时... 查看详情

第一周第四节用户模式救援模式及虚拟机克隆免秘钥交互式登录(代码片段)

虚拟机单用户模式、救援模式及虚拟机克隆免秘钥交互式登录单用户模式、救援模式命令及运行级别介绍:重启命令:reboot、init6、shutdown-rnow关机命令:init0、poweroff运行级别:0-halt(DoNOTsetinitdefaulttothis)运行级别0:系统停机状态... 查看详情

概述-第四节:计算机网络的性能指标(代码片段)

文章目录(1)速率(2)带宽(3)吞吐量(4)时延①:基本概念②:计算公式(5)时延带宽积(6)往返时间RTT(7)利用率(8)丢包率计算机网络的性 查看详情

第四节——解析makefile(代码片段)

一、解析makefile文件makefike文件原文:#Makefiletobootupthenetwork,anddotestingwithchannel,chaincode#Run`maketest`willpassalltestingcases,anddeletethenetwork#Run`makeready`willcreateanetwork,passtestingcases,andstandthereformanualtest,e.g.,maketest_channel_list#support... 查看详情

网络层-第四节:ipv6(代码片段)

文章目录一:IPv6数据报格式(1)IPv4首部和IPv6首部(2)IPv6数据报格式二:IPv6和IPv4的区别三:IPv6地址(1)IPv6地址表示方法(2)IPv6基本地址类型四:IPv6向IPv4过渡的策略解决IP地址... 查看详情

第三周第四节dfdufdisk命令及磁盘分区(代码片段)

df,du,fidsk命令df命令:用于显示磁盘分区上的可使用的磁盘空间。默认显示单位为KB。可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息。命令选项:-h:以KB以上的单位显示(M,G),可读性较高;-i:显示inode信... 查看详情

hands-on-data-analysis第二单元第四节数据可视化(代码片段)

hands-on-data-analysis第二单元第四节数据可视化文章目录hands-on-data-analysis第二单元第四节数据可视化1.简单绘图1.1.导入库1.2.基本的绘图示例1.3.子图示例1.4.子图绘图示例1.5.pyplot.subplots选项2.可视化展示泰坦尼克号数据集中男女中生... 查看详情

beego利用casbin进行权限管理——第四节策略更新(代码片段)

移步到这里近4个月没有更新这个系列。这个系列都是我粗浅的理解,其中我感觉有些的思路并非最优,并不合主流概念,因为我没去学习rbac之类的概念,仅供参考。特别是对于权限设计的处理方式,casbin是尽量用它自己的查询... 查看详情

《python多人游戏项目实战》第四节实现房间功能(代码片段)

目录4.1确定同一聊天室玩家及房主4.2 绘制开始或准备按钮4.3 实现按钮功能4.4完整代码下载地址:在本节,我们会在原有的程序基础上加上房间的功能。当玩家打开游戏窗口后,会自动出现在1号或者2号聊天室。只有... 查看详情

《buildozer打包实战指南》第四节正式打包一个apk文件(代码片段)

目录4.1了解buildozer.spec配置文件中的常用参数4.2 修改配置文件打包apk在上一节内容中,我们配置好了打包环境,还顺带成功打包出了一个apk文件(读者可以把这个apk安装到手机上运行)。不过在打包这个apk前࿰... 查看详情

java网络编程-第四节:tcp流套接字(serversocket)编程(代码片段)

文章目录一:Java流套接字通信模型二:相关API详解(1)ServerSocket(2)Socket三:TCP通信示例一:客户端发送什么服务端就返回什么(1)代码(2)效果展示(3)分析四: 查看详情