启动Docker容器时出现FileNotFoundError错误的原因咨询
Docker容器中
torch.load找不到model.pth文件的原因分析 从你提供的错误日志、Dockerfile和代码来看,这个问题的核心是路径大小写不匹配,结合Linux系统的特性,导致程序找不到目标文件,具体分析如下:
1. 大小写敏感的文件系统(关键原因)
你代码里加载模型的路径是:
best_model = torch.load('./ML/model.pth', map_location='cpu')
这里用的是大写的ML目录,但你的Dockerfile配置中:
COPY ./server/Ml/model.pth /app/Ml/ COPY ./server/Ml/demo.py /app/Ml/
模型文件被复制到了容器内的/app/Ml/目录(小写的l)。
Docker容器基于Linux系统,而Linux文件系统是大小写敏感的,ML和Ml会被识别为两个完全不同的目录,所以程序在./ML/下自然找不到model.pth文件。
2. 相对路径与工作目录的匹配问题
你的Dockerfile设置了WORKDIR /app,容器启动后程序的工作目录就是/app。代码里的./ML/model.pth对应的绝对路径是/app/ML/model.pth,但实际模型文件的位置是/app/Ml/model.pth,路径完全不匹配,这就是触发FileNotFoundError的直接原因。
快速修复方案
你可以任选一种方式解决:
- 修改代码中的路径,将
./ML/model.pth改为./Ml/model.pth,与Dockerfile里的目录名保持一致 - 修改Dockerfile的COPY路径,把
/app/Ml/改为/app/ML/,和代码里的目录名匹配
内容的提问来源于stack exchange,提问作者ksksks
相关产品推荐
相关产品推荐

