Hyperledger Fabric first-network启动报错:缺失指定MSP文件夹
我之前在Ubuntu 18.04上跑first-network时也碰到过一模一样的问题,给你几个针对性的排查和解决方法:
1. 先确认本地加密文件是否真的生成完全
回到first-network目录,先检查本地的crypto-config路径下有没有目标文件:
ls -la crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp
如果这个路径为空或者不存在,说明./byfn.sh -m generate其实没彻底成功(可能有隐性报错你没注意到)。这种情况先清理残留文件,重新生成:
./byfn.sh -m down rm -rf crypto-config/ channel-artifacts/ ./byfn.sh -m generate
执行generate的时候盯紧终端输出,确保全程没有报错信息。
2. 检查Docker容器的卷映射配置
如果本地文件确实存在,但容器里找不到,大概率是docker-compose的卷映射出了问题。打开first-network下的docker-compose-cli.yaml,找到peer0.org1.example.com的服务配置,确认volumes字段里有没有正确映射本地crypto-config到容器内路径:
volumes: - ./crypto-config:/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/
要是这条映射缺失或者路径写错,容器自然读不到加密文件。修正后保存,再重新执行./byfn.sh -m up。
3. 排查文件权限问题
Ubuntu的权限经常搞事情,如果你用root用户执行了generate,再用普通用户跑up,容器可能没权限读取本地的crypto-config文件。可以先给文件夹赋权:
sudo chmod -R 755 crypto-config/
或者直接用sudo执行启动命令:
sudo ./byfn.sh -m up
4. 确认Fabric镜像版本匹配
镜像版本不匹配也会导致这类诡异的路径问题。先检查本地的Fabric镜像:
docker images | grep hyperledger/fabric
确保peer、orderer、cli等所有镜像的版本和你当前first-network脚本的版本一致。如果版本混乱,建议清理现有镜像后重新拉取对应版本:
docker rmi $(docker images | grep hyperledger/fabric | awk '{print $3}') # 以1.4.9版本为例,拉取对应镜像: curl -sSL https://bit.ly/2ysbOFE | bash -s -- 1.4.9 1.4.9 0.4.22
试试上面这几个步骤,应该能解决你的问题。
内容的提问来源于stack exchange,提问作者Prakash P

