Docker构建出现FileNotFoundError,请求解决模型文件路径问题
解决Docker构建时
FileNotFoundError: app/mlsample/model/clf.joblib不存在的问题 1. 核对本地文件结构与拼写
- 确认本地项目根目录下是否存在完整路径
app/mlsample/model/clf.joblib,检查文件名、目录名的拼写(Linux环境下路径区分大小写,注意大小写是否匹配)。 - 参考正确的目录结构示例:
项目根目录 ├── app/ │ ├── ml_sample/ │ │ ├── model/ │ │ │ └── clf.joblib ├── docker-ml.py ├── Dockerfile ├── requirements.txt
2. 检查Dockerfile的COPY指令
如果模型文件没被复制到镜像中,运行时必然找不到。确保Dockerfile包含正确的复制命令:
- 复制整个app目录到镜像:
COPY ./app /app - 或单独复制模型文件:
COPY ./app/mlsample/model/clf.joblib /app/mlsample/model/clf.joblib
注意COPY的源路径是相对于docker build执行时的构建上下文(当前目录)的相对路径,源、目标路径都要准确。
3. 修正docker-ml.py中的文件引用路径
- 若脚本用相对路径读取模型,确认Dockerfile是否设置了
WORKDIR:比如设置WORKDIR /project后,脚本里的路径应为./app/mlsample/model/clf.joblib,或直接使用绝对路径/project/app/mlsample/model/clf.joblib。 - 绝对禁止使用本地主机的绝对路径(如
C:/xxx/clf.joblib),这类路径在Docker镜像中不存在。
4. 排查.dockerignore规则
如果.dockerignore文件中包含app/mlsample/model/或*.joblib这类规则,会导致文件被排除在构建上下文外,无法复制到镜像。打开.dockerignore确认没有相关忽略规则。
5. 添加调试步骤定位问题
在Dockerfile的RUN python ./docker-ml.py之前添加目录查看命令,验证文件是否存在:
RUN ls -la /app/mlsample/model/ RUN pwd # 查看当前工作目录
重新构建镜像,通过输出的目录内容确认问题根源。
内容的提问来源于stack exchange,提问作者Nicolas
相关产品推荐
相关产品推荐

