Hyperledger Fabric:对等链代码实例化错误

Hyperledger Fabric: peer chaincode instantiate error

Error starting container: Failed to generate platform-specific docker build: Error returned from build: 1 "can't load package: package ../../bin/github.com/hyperledger/fabric/chaincode/marbles: open /bin/github.com/hyperledger/fabric/chaincode/marbles: no such file or directory.

我看到它正在寻找一个相对目录。相对于什么?链码安装很好。如果安装了链码,为什么找不到实例化? 1个同行。 1个单独订购者。频道加入正常。

安装链码并不意味着您已经正确映射了您的链码路径,

peer chaincode install -p {path} -n {} -v {}

链码实例化构建并实例化您的链码。

peer chaincode instantiate -n {} -v {} -c {} -C {}
  • 在 docker 组合文件中仔细检查 volumes/chaincode 的映射 cli。
  • 安装链码时使用实际路径。

路径映射中有 "hidden" 预期。它期望在 gopath 下有一个 /src 目录,这给我带来了一些麻烦,直到我弄清楚了。

这是我最初的解决方案:

在您为同行编写的 yaml 中,您将设置环境变量:

- GOPATH=/opt/gopath

然后在 CLI 中你可以这样安装和实例化:

SIGNED_CHAINCODE_LOCATION=/opt/gopath/src/chaincode/<cc_dir>/<signed_cc>.out

peer chaincode install /${SIGNED_CHAINCODE_LOCATION} 

并正常实例化。 如果不需要打包签名,直接用目录代替.out文件即可。

在我的例子中,我在节点中添加了一个工作目录,将链码设置为我的基本区块链目录的相对目录:- ./chaincode/:/opt/gopath/src/chaincode/ 并将 go 文件夹转储到那里。