启动Hyperledger Fabric首个网络遇script.sh不存在错误求助
解决Hyperledger Fabric byfn.sh启动时找不到scripts/script.sh的问题
你在Windows环境下启动首个Fabric网络时碰到的这个错误,大概率是路径挂载或者环境配置的问题,我给你梳理几个排查和解决的方向:
1. 确保在正确的工作目录执行脚本
首先要确认你是在**fabric-samples/first-network**目录下运行的./byfn.sh -m up。脚本里调用scripts/script.sh用的是相对路径,如果你在上级目录或者其他路径执行,容器内就找不到对应的文件。
执行以下命令切换到正确目录:
cd C:\User\XXXXX\fabric-samples\first-network
之后再重新运行启动命令。
2. 检查Docker Desktop的文件共享权限
Windows下Docker容器要访问主机的文件,必须开启对应盘符的文件共享:
- 打开Docker Desktop,点击右上角设置图标
- 进入
Resources > File Sharing选项 - 确保你的
C:盘(或者C:\User\XXXXX所在的盘符)已经被勾选 - 点击
Apply & Restart重启Docker,让设置生效
3. 规避路径中的空格和格式问题
如果你的用户名目录(XXXXX)包含空格,可能会导致Docker挂载卷时解析失败。如果是这种情况,建议把fabric-samples移动到一个没有空格的路径下,比如C:\fabric-samples。
另外,如果你用的是Git Bash或者WSL环境,要确保路径的斜杠是Linux风格的(/而不是\),避免Windows路径格式在容器内不兼容。
4. 验证容器内的挂载路径是否正确
可以手动检查cli容器里是否真的挂载了scripts目录:
- 先启动网络但不执行初始化脚本:
./byfn.sh -m up -s none
- 进入cli容器:
docker exec -it cli bash
- 在容器内查看目标路径:
ls -l /opt/gopath/src/github.com/hyperledger/fabric/peer/scripts
如果看不到script.sh,说明挂载配置有问题。可以打开first-network/docker-compose-cli.yaml,检查volumes部分的挂载规则,应该有类似这样的配置:
volumes: - ./scripts:/opt/gopath/src/github.com/hyperledger/fabric/peer/scripts
确认主机侧的./scripts路径相对于docker-compose-cli.yaml是正确的(也就是first-network/scripts)。
5. 清理缓存后重试
旧的容器、镜像缓存可能会导致异常,先清理环境再重新启动:
# 停止并清理当前网络 ./byfn.sh -m down # 清理所有未使用的Docker资源 docker system prune -a # 重新启动网络 ./byfn.sh -m up
内容的提问来源于stack exchange,提问作者Arun
相关产品推荐
相关产品推荐

