Fabric 链码容器(nodejs)无法访问 npm

问题描述 投票:0回答:2

我很感谢在这件事上的帮助。

我有最新的镜像(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
hyperledger-fabric hyperledger
2个回答
0
投票

有用!对于中国用户来说,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

希望可以帮助到其他人!


0
投票

为此,您可以使用 npm 代理注册表,例如 verdaccio,重建 nodeEnv 映像。

您可以在本文中找到完整的分步指南https://medium.com/@badrbellaj/how-to-deploy-node-js-chaincode-on-an-offline-machine-6677cb6d8f8d

© www.soinside.com 2019 - 2024. All rights reserved.