我很感谢在这件事上的帮助。
我有最新的镜像(2.2.0,CA 1.4.8),但是当我在第一个对等点安装链码时遇到错误:
failed to invoke chaincode lifecycle, error: timeout expired while executing transaction
我在代理后面工作,使用 VPN。
我尝试增加所有对等点的 docker 配置的超时:
CORE_CHAINCODE_DEPLOYTIMEOUT=300s
CORE_CHAINCODE_STARTUPTIMEOUT=300s
到目前为止,该过程完美运行(通道创建,同行加入通道)。可以使用 npm install 手动安装链代码。 我在任何地方都找不到这个问题的答案。有人可以指导一下吗?
更新:链码容器似乎获得了 boostrap(甚至赋予了随机名称),但陷入了困境:
+ INPUT_DIR=/chaincode/input
+ OUTPUT_DIR=/chaincode/output
+ cp -R /chaincode/input/src/. /chaincode/output
+ cd /chaincode/output
+ '[' -f package-lock.json -o -f npm-shrinkwrap.json ]
+ npm install --production
我相信这是代理阻止了npm。
我尝试用以下方法解决这个问题:
npm config set proxy proxy
npm config set https-proxy proxy
npm set maxsockets 3
经过几天的努力,我找到了解决方案: -必须构建一个自定义结构nodeenv图像,其中包含用于设置npm代理变量的环境变量:如代理后面实例化节点链代码所示。之后,我在 docker.yaml 中设置了以下环境变量:
- CORE_CHAINCODE_NODE_RUNTIME=my_custom_image
- CORE_CHAINCODE_PULL=true
有用!对于中国用户来说,npmjs有时可能会断线,可以自己构建实例。
例如,如果我使用2.3.1版本,请下载https://github.com/hyperledger/fabric-chaincode-node/tree/v.2.3.1版本。然后进入docker/fabric-nodeenv,修改Dockerfile,添加一行修改npmjs的仓库源:
RUN npm config set registry http://registry.npm.taobao.org
整个文件如下:
ARG NODE_VER=12.16.1
FROM node:${NODE_VER}-alpine
RUN npm config set registry http://registry.npm.taobao.org
RUN apk add --no-cache \
make \
python \
g++;
RUN mkdir -p /chaincode/input \
&& mkdir -p /chaincode/output \
&& mkdir -p /usr/local/src;
ADD build.sh start.sh /chaincode/
然后使用命令构建 docker 镜像
docker image build-t whatever/fabric-nodeenv:2.3.
等几分钟,他会构建镜像,然后使用docker images,你会看到他创建的镜像
最后在peer的配置文件中,添加peer-environment
- CORE_CHAINCODE_NODE_RUNTIME=whatever/fabric-nodeenv:2.3
希望可以帮助到其他人!
为此,您可以使用 npm 代理注册表,例如 verdaccio,重建 nodeEnv 映像。
您可以在本文中找到完整的分步指南https://medium.com/@badrbellaj/how-to-deploy-node-js-chaincode-on-an-offline-machine-6677cb6d8f8d