Hyperledger Fabric1.4 系列四(Fabric个各容器启动过程)

文章目录

    • 启动命令
    • `orderer`信息
    • `peer0.org1.example.com` 信息
    • cli 信息
    • 总结

启动命令

查看byfn.sh脚本 具体执行的命令:

# $COMPOSE_FILE=“docker-compose-cli.yaml”
docker-compose -f $COMPOSE_FILE up -d 2>&1

注: docker-compose 配置文件说明文档:https://docs.docker.com/compose/compose-file
查看 docker-compose-cli.yaml 可以分别看到orderer、peer等节点的配置信息

orderer信息

orderer.example.com:
    extends:
      file:   base/docker-compose-base.yaml
      service: orderer.example.com
    container_name: orderer.example.com
    networks:
      - byfn

service = orderer.example.com 配置信息

orderer.example.com:
    container_name: orderer.example.com
    image: hyperledger/fabric-orderer:$IMAGE_TAG
    environment:
      - FABRIC_LOGGING_SPEC=INFO
      - ORDERER_GENERAL_LISTENADDRESS=0.0.0.0
      - ORDERER_GENERAL_GENESISMETHOD=file
      - ORDERER_GENERAL_GENESISFILE=/var/hyperledger/orderer/orderer.genesis.block
      - ORDERER_GENERAL_LOCALMSPID=OrdererMSP
      - ORDERER_GENERAL_LOCALMSPDIR=/var/hyperledger/orderer/msp
      # enabled TLS
      - 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]
      - ORDERER_KAFKA_TOPIC_REPLICATIONFACTOR=1
      - ORDERER_KAFKA_VERBOSE=true
    working_dir: /opt/gopath/src/github.com/hyperledger/fabric
    command: orderer
    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

说明:挂载操作:

  • orderer.genesis.block文件 挂载到 /var/hyperledger/orderer/orderer.genesis.block
  • 生成的orderer的msp目录 挂载到 /var/hyperledger/orderer/msp
  • 生成的order的tls目录 挂载到 /var/hyperledger/production/orderer

关于tls文件夹内文件说明:

  • server.key:私用秘钥
  • server.crt:CA认证后的证书文件,签署人用自己的key给你签署凭证(ca的私钥签署的文件)
  • ca.crt:ca证书,用来验证ca签发的证书文件(可以验证service.crt).

peer0.org1.example.com 信息

peer0.org1.example.com:
    container_name: peer0.org1.example.com
    extends:
      file:  base/docker-compose-base.yaml
      service: peer0.org1.example.com
    networks:
      - byfn

service = peer0.org1.example.com

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_GOSSIP_BOOTSTRAP=peer1.org1.example.com:7051
      - 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
      - 7053:7053

说明:挂载操作:

  • /var/run/ 挂载到 /host/var/run/
  • 生成的当前节点的msp目录 挂载到 /etc/hyperledger/fabric/msp
  • 生成的当前节点的tls目录 挂载到 /etc/hyperledger/production
  • peer0.org1.example.com 挂载到 /var/hyperledger/production

docker-compose-cli.yaml 中存在如下配置

volumes:
  orderer.example.com:
  peer0.org1.example.com:
  peer1.org1.example.com:
  peer0.org2.example.com:
  peer1.org2.example.com:

注:peer0.org1.example.com 是一个挂载卷 使用引擎配置的默认驱动程序(大部分情况是:local driver) 通过inspect 容器 可以看到容器挂载信息

docker inspect dd548b0abad0(容器ID)

"Mounts": [
            {
                "Type": "bind",
                "Source": "/data/fabric-samples/first-network/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls",
                "Destination": "/etc/hyperledger/fabric/tls",
                "Mode": "rw",
                "RW": true,
                "Propagation": "rprivate"
            },
            {
                "Type": "bind",
                "Source": "/data/fabric-samples/first-network/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/msp",
                "Destination": "/etc/hyperledger/fabric/msp",
                "Mode": "rw",
                "RW": true,
                "Propagation": "rprivate"
            },
            {
                "Type": "volume",
                "Name": "net_peer0.org1.example.com",
                "Source": "/var/lib/docker/volumes/net_peer0.org1.example.com/_data",
                "Destination": "/var/hyperledger/production",
                "Driver": "local",
                "Mode": "rw",
                "RW": true,
                "Propagation": ""
            },
            {
                "Type": "bind",
                "Source": "/var/run",
                "Destination": "/host/var/run",
                "Mode": "rw",
                "RW": true,
                "Propagation": "rprivate"
            }
        ],

可以看到默认的文件路径为:/var/lib/docker/volumes/net_peer0.org1.example.com/_data.
真实的挂载信息是:
/var/lib/docker/volumes/net_peer0.org1.example.com/_data: /var/hyperledger/production

其他peer节点是同样的信息

cli 信息

cli:
    container_name: cli
    image: hyperledger/fabric-tools:$IMAGE_TAG
    tty: true
    stdin_open: true
    environment:
      - GOPATH=/opt/gopath
      - CORE_VM_ENDPOINT=unix:///host/var/run/docker.sock
      #- FABRIC_LOGGING_SPEC=DEBUG
      - FABRIC_LOGGING_SPEC=INFO
      - CORE_PEER_ID=cli
      - CORE_PEER_ADDRESS=peer0.org1.example.com:7051
      - CORE_PEER_LOCALMSPID=Org1MSP
      - CORE_PEER_TLS_ENABLED=true
      - CORE_PEER_TLS_CERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/server.crt
      - CORE_PEER_TLS_KEY_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/server.key
      - CORE_PEER_TLS_ROOTCERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt
      - CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/[email protected]/msp
    working_dir: /opt/gopath/src/github.com/hyperledger/fabric/peer
    command: /bin/bash
    volumes:
        - /var/run/:/host/var/run/
        - ./../chaincode/:/opt/gopath/src/github.com/chaincode
        - ./crypto-config:/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/
        - ./scripts:/opt/gopath/src/github.com/hyperledger/fabric/peer/scripts/
        - ./channel-artifacts:/opt/gopath/src/github.com/hyperledger/fabric/peer/channel-artifacts
    depends_on:
      - orderer.example.com
      - peer0.org1.example.com
      - peer1.org1.example.com
      - peer0.org2.example.com
      - peer1.org2.example.com
    networks:
      - byfn

说明:
cli 中 挂载信息如下:

  • 上一级目录下的chaincode
  • 生成的所有证书文件 crypto-config目录
  • 当前目录的脚本文件
  • 生成的channel-artifacts目录

总结

该过程主要是进行fabric网络中个部件的配置,并启动每个部件. 各部件之间相互独立.

你可能感兴趣的:(Hyperledger Fabric1.4 系列四(Fabric个各容器启动过程))