Hyperledger Fabric 2.0 -chaincode 作为外部服务:Unknown chaincodeType:EXTERNAL

iam*_*man 5 hyperledger hyperledger-fabric hyperledger-chaincode

我正在尝试将链码设置为官方文档中指定的外部服务

第一件事是设置externalBuilder变量

chaincode:
  externalBuilders:
  - name: my-golang-builder
    path: /builders/golang
Run Code Online (Sandbox Code Playgroud)

在我的对等配置中,我添加了以下内容来覆盖它

- CORE_CHAINCODE_EXTERNALBUILDERS_PATH=/var/hyperledger/builderpath
- CORE_CHAINCODE_EXTERNALBUILDERS_NAME=externalbuilder
Run Code Online (Sandbox Code Playgroud)

但是当我运行时,peer install lifecycle我得到了

docker build failed: platform builder failed: Failed to generate a Dockerfile: Unknown chaincodeType: EXTERNAL
Run Code Online (Sandbox Code Playgroud)

尽管如此,它仍然尝试安装,因为旧的方式似乎没有检测到我的外部构建器路径

谁能知道解决办法

更新

对等体.yaml

peer1.base.right:
    container_name: peer1.right.base
    extends:
      file: base.yaml
      service: peer-base
    environment:
      - CORE_PEER_ID=peer1.right.base
      - CORE_PEER_ADDRESS=peer1.right.base:9051
      - CORE_PEER_LISTENADDRESS=0.0.0.0:9051
      - CORE_PEER_CHAINCODEADDRESS=peer1.right.base:9052
      - CORE_PEER_CHAINCODELISTENADDRESS=0.0.0.0:9052
      - CORE_PEER_GOSSIP_BOOTSTRAP=peer1.right.base:10051
      - CORE_PEER_GOSSIP_EXTERNALENDPOINT=peer1.right.base:9051
      - CORE_PEER_LOCALMSPID=RightOrgMSP
    volumes:
        - /var/run/:/host/var/run/
        - ./crypto-config/peerOrganizations/base.right/peers/peer1.base.right/msp:/etc/hyperledger/fabric/msp
        - ./crypto-config/peerOrganizations/base.right/peers/peer1.base.right/tls:/etc/hyperledger/fabric/tls
        - ./chaincode/external_builder:/builders/external
        - ./fabric-config:/etc/hyperledger/fabric
        - peer1.base.right:/var/hyperledger/production
    ports:
      - 9051:9051
    networks:
Run Code Online (Sandbox Code Playgroud)

- ./fabric-config:/etc/hyperledger/fabric 是core.yaml的路径

核心文件

 ......
 externalBuilders:
              - name: external-builder
                path: /builders/external
                environmentWhitelist:
                   - GOPROXY
 ......
Run Code Online (Sandbox Code Playgroud)

iam*_*man 0

解决了这个问题,我实际上为 core.yaml 文件设置了错误的路径

实际应该是这样的。编辑您的 docker 文件并根据此修改对等 docker 卷部分

 - ./config/core.yaml:/etc/hyperledger/fabric/core.yaml
 
Run Code Online (Sandbox Code Playgroud)