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 文件夹转储到那里。
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 文件夹转储到那里。