You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

离线环境下如何通过本地npm registry在Hyperledger Composer中实例化链码?

离线环境下Hyperledger Fabric链码实例化解决方案

我之前也碰到过离线环境里链码实例化时,因npm install无法访问公网registry失败的问题,分享下我通过搭建本地npm registry容器解决的完整方案:

1. 在docker-compose.yml中添加本地npm Registry容器

我选用Verdaccio作为轻量的本地npm registry,将它加入Fabric容器所在的composer_default网络,确保链码容器能访问到它。配置片段如下:

npmregistry:
  image: verdaccio/verdaccio:latest
  container_name: npmregistry
  ports:
    - "4873:4873"
  networks:
    - composer_default
  volumes:
    - ./verdaccio/storage:/verdaccio/storage
    - ./verdaccio/config:/verdaccio/conf

挂载存储和配置目录是为了持久化依赖包和自定义registry配置,避免容器重启后丢失数据。

2. 提前准备链码依赖包

离线环境下得先把链码需要的依赖提前准备好:

  • 在联网机器上,进入链码目录执行npm install --package-lock-only生成精确的依赖锁文件
  • 或者用npm pack把所有依赖包打包成.tgz文件,之后通过Verdaccio的web界面(http://localhost:4873)或者npm publish命令上传到本地registry

3. 让链码容器指向本地registry

在你的链码根目录下创建.npmrc文件,内容设置为:

registry=http://npmregistry:4873/

这样链码容器在执行npm install时,会自动请求本地的registry,而不是默认的公网npm源。

4. 启动容器并验证连通性

执行docker-compose up -d启动所有容器(包括npmregistry),然后可以在任意同网络的Fabric容器里验证registry是否可用:

docker exec -it peer0.org1.example.com bash
npm view lodash  # 替换成你的链码实际依赖包名

如果能正常返回包信息,说明本地registry已经可以被链码容器访问。

5. 执行链码实例化

现在就可以正常执行链码实例化命令了,比如:

peer chaincode instantiate -o orderer.example.com:7050 -C mychannel -n mycc -v 1.0 -c '{"Args":["init","a","100","b","200"]}' -P "AND ('Org1MSP.peer','Org2MSP.peer')"

此时链码容器会连接本地npmregistry完成依赖安装,全程不需要公网连接。

内容的提问来源于stack exchange,提问作者aldred

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 06:13:54