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

Docker启动项目遇ModuleNotFoundError:如何修复Dockerfile?

修复Dockerfile解决ModuleNotFoundError问题

错误原因

非Docker环境能正常运行,但Docker镜像中缺少项目本地的CV模块目录——你当前的Dockerfile仅复制了server.py、pyproject.toml和.python-version,没有将包含CV模块的目录拷贝到镜像内,导致Python无法找到该模块。

修复方案

修改Dockerfile,在第二个构建阶段添加对CV目录的拷贝操作,或者直接拷贝整个项目的必要文件(需配合.dockerignore排除无关文件)。

修改后的Dockerfile

FROM ubuntu:24.04 as build
WORKDIR /project/
RUN apt-get update
RUN apt-get install -y curl
RUN apt-get install ffmpeg libsm6 libgl1 libxext6 -y
RUN curl -LsSf https://astral.sh/uv/install.sh | sh
COPY pyproject.toml /project/
COPY .python-version /project/
RUN $HOME/.local/bin/uv sync

FROM build
# 先拷贝CV模块目录到镜像中
COPY CV/ /project/CV/
# 再拷贝server.py
COPY server.py /project/
CMD $HOME/.local/bin/uv run python -OO server.py

可选优化(如果项目有多个本地模块)

如果项目包含多个本地模块或配置文件,可直接拷贝整个项目目录(推荐配合.dockerignore排除__pycache__、.git、venv等无关内容):

FROM ubuntu:24.04 as build
WORKDIR /project/
RUN apt-get update
RUN apt-get install -y curl
RUN apt-get install ffmpeg libsm6 libgl1 libxext6 -y
RUN curl -LsSf https://astral.sh/uv/install.sh | sh
COPY pyproject.toml /project/
COPY .python-version /project/
RUN $HOME/.local/bin/uv sync

FROM build
# 拷贝整个项目目录(需提前配置.dockerignore)
COPY . /project/
CMD $HOME/.local/bin/uv run python -OO server.py

补充说明

  • 确保你的.dockerignore文件中没有排除CV目录,否则COPY指令会忽略它;
  • 若pyproject.toml中未声明本地模块,需添加如下配置(非Docker环境正常的话大概率已配置):
    [project]
    packages = ["CV"]
    

内容的提问来源于stack exchange,提问作者art-kors

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 18:12:35