GitHub Actions下载文件后Dockerfile COPY提示文件不存在的问题求助
解决GitHub Actions中预下载.pkl文件无法复制到Docker镜像的问题
问题原因
你遇到的文件未找到错误,核心是Docker构建上下文内的文件路径与Dockerfile中COPY命令的路径不匹配:
- 你的
load-artifacts任务上传的是./xxx/xxx_model.pkl路径下的文件,使用actions/download-artifact@v3下载时,默认会保留原目录结构,最终文件会出现在build任务工作目录的./xxx/xxx_model.pkl位置。 - 如果Dockerfile中COPY命令写的是
COPY xxx_model.pkl ./,自然会找不到文件——因为实际文件在xxx/子目录里,不在Dockerfile所在的根目录。
解决方案
根据你的Workflow配置,提供两种直接可行的修复方式:
方式1:调整文件位置,将.pkl移到Dockerfile同目录
修改build任务中的下载步骤,添加文件移动命令,把模型文件放到Dockerfile所在的根目录:
- uses: actions/download-artifact@v3 id: download with: name: ppe_model path: ./ # 保留原目录结构下载 - name: 移动模型文件到Dockerfile目录 run: mv ./xxx/xxx_model.pkl ./
然后Dockerfile中保持原COPY命令即可:
COPY xxx_model.pkl ./
方式2:修改Dockerfile的COPY路径,匹配实际文件位置
无需调整Workflow,直接修改Dockerfile的COPY命令,指向下载后的实际文件路径:
COPY ./xxx/xxx_model.pkl ./
额外验证步骤
你可以查看build任务中View directory files步骤的输出,确认xxx_model.pkl的具体位置,再对应调整路径,确保万无一失。
内容的提问来源于stack exchange,提问作者Python coder
相关产品推荐
相关产品推荐

