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

Docker构建报unable to locate files and directories错误排查

问题根因

报错核心是Docker构建上下文边界配置错误,和本地文件实际存放路径没有关系:

  • 你执行构建的命令为docker build -t big_box ./services/big_box,命令最后一个参数指定的是Docker构建上下文目录,Docker只会将这个目录下的内容打包发送给构建引擎,上下文目录外的所有文件(包括和services同级的lib目录、services目录下非big_box的内容)都无法被Dockerfile里的COPY/ADD指令访问。
  • 你的Dockerfile中写了COPY ./services/big_box/pyproject.toml、COPY ./lib ../../lib这类路径,这些路径在你当前指定的./services/big_box构建上下文中根本不存在,自然会抛出文件无法定位的错误。
  • 额外问题:你在COPY指令中使用../../lib这类跨级相对路径作为目标地址,很容易出现容器内路径解析偏差,属于不推荐的写法。
修复方案

按以下两步调整即可解决问题:

  • 修改构建命令,将构建上下文切换为项目根目录(也就是你当前执行命令的backend-python目录),同时显式指定Dockerfile的路径:
docker build -t big_box -f ./services/big_box/Dockerfile .
  • 调整Dockerfile内的COPY路径配置,使用绝对路径作为复制目标,避免相对路径解析错误,修正后的完整Dockerfile如下:
FROM python:3.9

ENV PYTHONUNBUFFERED True
ENV PYTHONPATH /app

WORKDIR /app/services/big_box

RUN pip install "poetry==1.1.8"

COPY ./services/big_box/pyproject.toml \
     ./services/big_box/poetry.lock \
     ./

COPY ./lib /app/lib

RUN poetry config virtualenvs.create false && \
    poetry install --no-dev

COPY ./services/big_box/src ./src

CMD exec gunicorn --bind :$PORT --workers 1 --threads 8 --timeout 0 'src.app:create_app()'

调整完成后重新执行构建命令即可正常完成镜像构建。如果担心路径配置有误,可以在执行构建前先在backend-python目录下执行ls ./services/big_box/pyproject.toml、ls ./lib两个命令,确认对应文件存在即可。

内容的提问来源于stack exchange,提问作者Asad Amir Khwaja

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 09:57:31