【问题标题】:Hyperledger Fabric External builder Failed to generate a Dockerfile: Unknown chaincodeType: EXTERNALHyperledger Fabric 外部构建器无法生成 Dockerfile:未知链代码类型:EXTERNAL
【发布时间】:2021-05-22 12:00:52
【问题描述】:
peer lifecycle chaincode install ../asset-transfer-basic/chaincode-external/asset-transfer-basic-external.tgz
错误:链代码安装失败,状态为:500 - 无法调用“InstallChaincode”的支持实现:无法构建链代码:docker build 失败:平台构建器失败:无法生成 Dockerfile:未知链代码类型:外部
【问题讨论】:
标签:
hyperledger-fabric
chaincode
【解决方案1】:
提供bin(build、release、detect)目录下脚本所需的权限。
chmod 777 -R bin/
还要确保正确映射链码目录
core.yaml
externalBuilders:
# This path has to be mapped to peer containers with a local chaincode directory
- path: /opt/gopath/src/github.com/hyperledger/external-builder
name: chaincode-external-builder
propagateEnvironment:
- CORE_PEER_TLS_ROOTCERT_FILE
- CORE_PEER_TLS_CERT_FILE
- CORE_PEER_TLS_KEY_FILE
docker-compose.yaml
....
volumes:
# external builder chaincode path (local/path:container/path)
- ../chaincode:/opt/gopath/src/github.com/hyperledger/external-builder
【解决方案2】:
这可能会发生,因为出于某种原因,您的外部构建器根本没有被执行,这导致对等方尝试以传统方式安装链代码。对于代码类型external 的那部分不支持,因此出现错误。
在我的情况下,错误是我的core.yaml 格式错误,因为externalBuilders 定义缩进太多,因此不再在chaincode 定义下定义。而且因为实际上由于格式错误而根本没有定义外部构建器,所以它无法执行,然后我得到了完全相同的错误。
因此,请注意如何格式化 yaml 文件。