Hyperledger fabric 2.0 -chaincode 作为外部 service:Unknown chaincodeType: EXTERNAL

Hyperledger fabric 2.0 -chaincode as external service:Unknown chaincodeType: EXTERNAL

我正在尝试将链码设置为 official doc

中指定的外部服务

首先是设置 externalBuilder 变量

chaincode:
  externalBuilders:
  - name: my-golang-builder
    path: /builders/golang

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

- CORE_CHAINCODE_EXTERNALBUILDERS_PATH=/var/hyperledger/builderpath
- CORE_CHAINCODE_EXTERNALBUILDERS_NAME=externalbuilder

但是当我 运行 peer install lifecycle 我得到

docker build failed: platform builder failed: Failed to generate a Dockerfile: Unknown chaincodeType: EXTERNAL

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

谁能知道解决方法

更新

peer.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:

- ./fabric-config:/etc/hyperledger/fabric是core.yaml

的路径

core.yaml

 ......
 externalBuilders:
              - name: external-builder
                path: /builders/external
                environmentWhitelist:
                   - GOPROXY
 ......

您不能使用环境属性覆盖 chaincode.externalbuilders。它是一个复杂的对象,而不是一组单独的属性。并非 core.yaml 中的所有属性都可以用环境变量覆盖。

我遇到了完全相同的问题,天哪,我找不到原因。

所以,最终发生在我身上的是外部构建器没有被执行,然后对等点试图通过传统的方式安装链代码,它生成 Dockerfile 并在执行的那一部分给出了错误,因为“外部”类型不是默认平台之一(java、golang、节点)。

然后我开始测试东西并最终逐行检查 core.yaml 以试图找出可能导致它跳过我的外部构建器的原因。对我来说,原因是 core.yaml 中的 externalBuilders 定义缩进太多以至于不在 chaincode 定义之下。由于这个原因,对等点的设置方式当然是错误的,甚至没有尝试使用外部构建器。

因此,请确保您的 yaml 文件格式正确。

问题解决了,实际上我把 core.yaml 文件的路径放错了

实际应该是这样的。编辑您的 docker 文件并根据此

修改对等 docker 卷部分
 - ./config/core.yaml:/etc/hyperledger/fabric/core.yaml