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

Windows10 Docker容器运行Hyperledger Fabric byfn.sh遇脚本缺失错误求助

解决Hyperledger Fabric byfn.sh执行时'script/scripts.sh not found'错误

结合你在Windows 10 Docker容器(版本18.03.0-ce)中运行Fabric 1.1.0的byfn脚本遇到的问题,我整理了几个常见的排查方向和解决方案,你可以逐一尝试:

1. 检查容器内的目录挂载与文件存在性

Windows和Linux容器的文件系统挂载容易出现路径映射错误,导致scripts目录没有被正确加载到容器内:

  • 先进入你的Fabric容器,执行cd /path/to/your/first-network(替换为你容器内的byfn脚本所在目录),然后运行ls -la,确认scripts文件夹是否存在。
  • 如果不存在,说明本地的fabric-samples目录没有正确挂载到容器。调整启动容器的-v参数,确保本地的fabric-samples/first-network目录映射到容器内的对应路径,比如:
    docker run -v C:/your/local/path/fabric-samples/first-network:/first-network -it hyperledger/fabric-tools:1.1.0 bash
    

2. 修复脚本文件的换行符问题

Windows默认的CRLF换行符会导致Linux容器内的shell脚本执行异常,可能间接引发“文件找不到”的错误:

  • 如果你是通过Git克隆的fabric-samples,先在Windows终端执行git config --global core.autocrlf false,然后重新克隆仓库,避免Git自动转换换行符。
  • 如果你已经有本地文件,用Notepad++或VS Code打开byfn.sh和scripts/scripts.sh,将换行符转换为UNIX格式(LF):
    • Notepad++:编辑 -> 文档格式转换 -> 转换为UNIX格式
    • VS Code:右下角点击CRLF,选择LF

3. 给脚本添加执行权限

容器内的scripts.sh可能缺少执行权限,导致byfn.sh无法调用它:

  • 进入容器后,切换到first-network目录,执行:
    chmod +x scripts/*.sh
    
  • 也可以在启动容器时直接设置权限,比如:
    docker run -v C:/your/local/path/fabric-samples/first-network:/first-network -it hyperledger/fabric-tools:1.1.0 bash -c "chmod +x /first-network/scripts/*.sh && bash"
    

4. 验证版本一致性

虽然日志显示LOCAL和DOCKER版本都是1.1.0,但仍可能存在镜像或脚本版本不匹配的情况:

  • 重新拉取1.1.0版本的Fabric镜像,确保所有组件版本统一:
    docker pull hyperledger/fabric-peer:1.1.0
    docker pull hyperledger/fabric-orderer:1.1.0
    docker pull hyperledger/fabric-ca:1.1.0
    docker pull hyperledger/fabric-tools:1.1.0
    
  • 确保使用的fabric-samples是1.1.0版本,避免使用较新的samples配合旧版本镜像。

调试小技巧

如果以上方法都没解决,你可以手动执行scripts.sh来获取更详细的错误信息:

cd /first-network
./scripts/scripts.sh

根据输出的具体错误,能更精准定位问题所在。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:25:47