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
我正在尝试将链码设置为 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