docker-compose-cli.yaml詳解(進入cli容器後踩到深坑的我)(orderer容器未正常啓動)

先說我踩得什麼坑吧
(重新編輯此博客,以前寫的太low)

  • 配置文件詳解
  • cli容器中執行遇到的錯誤

docker-compose-cli.yaml詳解:

version: '2'

volumes:   #聲明掛載的卷
  orderer.example.com:
  peer0.org1.example.com:
  peer1.org1.example.com:
  peer0.org2.example.com:
  peer1.org2.example.com:

networks:   #聲明一個名稱爲byfn的網絡
  byfn:

services:

  orderer.example.com:   #定義一個名稱爲orderer.example.com的服務
    extends:    #擴展,代表需要加載的文件或服務  即使用了其中的配置信息
      file:   base/docker-compose-base.yaml      
      service: orderer.example.com   
    container_name: orderer.example.com   #當前容器名稱
    networks:      #指定當前容器所加入的網絡,如果需要加入多個網絡,可以定義多個
      - byfn

    #以下同上
  peer0.org1.example.com:    
    container_name: peer0.org1.example.com
    extends:
      file:  base/docker-compose-base.yaml
      service: peer0.org1.example.com
    networks:
      - byfn

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

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

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

  cli:    #定義一個客戶端容器,方便與各節點進行交互
    container_name: cli    #客戶端容器名稱
    image: hyperledger/fabric-tools:$IMAGE_TAG   #該服務所依賴的鏡像
    tty: true     #使用僞終端
    stdin_open: true    #標準輸入
    environment:     #環境變量
      - GOPATH=/opt/gopath        #指定go的路徑
      - CORE_VM_ENDPOINT=unix:///host/var/run/docker.sock
      #- FABRIC_LOGGING_SPEC=DEBUG
      - FABRIC_LOGGING_SPEC=INFO   #日誌級別
      - CORE_PEER_ID=cli      #當前節點的Id
      - CORE_PEER_ADDRESS=peer0.org1.example.com:7051   #以下與peer-base.yaml相同,表示當前客戶端容器默認與peer0.org1.example.com進行交互
      - 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    #TLS-peer0.org1.example.com的證書路徑
      - 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  #TLS-peer0.org1.example.com的密鑰路徑
      - 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    #TLS-peer0.org1.example.com的根證書路徑
      - CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/[email protected]/msp  @#TLS-組織1中Admin的MSP路徑
    working_dir: /opt/gopath/src/github.com/hyperledger/fabric/peer      #工作目錄,即進入容器所在的默認位置
    command: /bin/bash     #啓動容器後所運行的第一條命令:使用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容器中遇到的錯誤:

1、InitCmd -> ERRO 001 Cannot run peer because cannot init crypto, specified path "/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/[email protected]/msp" does not exist or cannot be accessed: stat /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/[email protected]/msp: no such file or directory
還未解決。。。。

2、Error: failed to create deliver client for orderer: orderer client failed to connect to orderer.example.com:7050: failed to create new connection: connection error: desc = "transport: error while dialing: dial tcp: lookup orderer.example.com on 127.0.0.11:53: no such host"
原因:
(1)之前搭建的網絡沒有清除乾淨,退出cli容器:exit;清除網絡:./byfn.sh -m down;重新啓動網絡進入cli容器
(2)調出orderer節點的容器日誌:docker logs orderer.example.com
在這裏插入圖片描述
可以看出是kafka版本的設置問題(Kafka.Version unset, setting to 0.10.2.0),至於kafka版本,如果不設置的默認的就是0.10.2.0.爲什麼會出現這種情況,我也不是很清楚,大佬路過還請指教一二。。。。
解決方法就是去更改kafka的版本。kafka版本控制的文件是/fabric-samples/config/orderer.yaml在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章