You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何向Docker镜像复制添加文件 构建时找不到测试图片文件

问题原因

你当前编写的Dockerfile仅复制了image_converter.py、test_image_converter.py两个Python脚本文件,没有将测试依赖的图片资源复制到镜像内的工作目录,执行单元测试时脚本在镜像文件系统中找不到目标图片,就会触发文件不存在的报错。
你的项目目录结构如下:
项目目录结构

修复方法
  • 补充COPY规则同步图片资源
    你需要在Dockerfile中新增指令,把测试用到的图片也复制到镜像的/usr/app/src工作目录下:
    • 如果测试图片和两个py文件、Dockerfile在同一级目录,直接按格式复制即可,比如用到jpg、png格式的测试图,就添加COPY *.jpg ./、COPY *.png ./规则
    • 如果图片统一存放在子文件夹中(比如命名为test_imgs、assets),就用COPY 文件夹名/ ./文件夹名/的格式把整个文件夹复制进去,保持和本地一致的目录结构,避免脚本里写的相对路径失效
    • 不想单独写每条复制规则的话,也可以直接用COPY . ./把当前构建目录下的所有文件复制进镜像,但建议同目录下新建.dockerignore文件,过滤掉本地虚拟环境、.git目录、本地缓存文件等不需要打包的内容,避免镜像体积冗余。
  • 检查脚本内的文件路径
    不要在代码里写本地机器的绝对路径,比如Windows的C:/code/project/test.jpg、Mac/Linux的/Users/xxx/project/test.jpg这类路径在镜像中不存在,统一使用相对于工作目录的相对路径写文件读取逻辑。

修改后的Dockerfile参考如下:

FROM ubuntu:latest

RUN apt update
RUN apt install python3 -y
RUN apt-get -y install python3-pip
RUN pip install pillow
RUN pip install wand
RUN DEBIAN_FRONTEND="noninteractive" apt-get install libmagickwand-dev --no-install-recommends -y

WORKDIR /usr/app/src
COPY image_converter.py ./
COPY test_image_converter.py ./
# 复制测试用图片,按需调整规则
COPY *.jpg ./
COPY *.png ./
# 存在图片子目录时放开对应注释
# COPY test_imgs/ ./test_imgs/

RUN python3 -m unittest test_image_converter.py

注意执行docker build命令时,要在Dockerfile所在的项目根目录下运行,否则COPY指令无法匹配到本地的源文件。

内容的提问来源于stack exchange,提问作者Mike D Hovhannisyan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 08:33:12