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

Docker Compose生产部署报错COPY failed: forbidden path outside the build context求助

错误原因

Dockerfile 中 COPY 指令的相对路径是基于 Compose 配置里指定的**构建上下文(build context)**计算,而非 Dockerfile 自身的存放路径。
你为 web 服务指定的构建上下文是 server 目录(配置中 context: .,默认对应执行 docker-compose 命令的当前目录,也就是 docker-compose.dev.yml 所在的 server 目录),Docker 构建时仅允许访问该上下文范围内的文件,你在 Dockerfile 中写 ../../ 前缀的路径相当于尝试跳转到 server 目录的上级两层,超出了上下文范围,因此触发报错。

另外你贴出的 Compose 配置存在缩进错误:dockerfile 字段应该归属于 build 配置下,和 context 同级缩进,否则 Compose 会识别不到指定的 Dockerfile 路径,也是潜在诱因。

修复步骤
  • 调整 server/docker/api/Dockerfile.dev 中所有带 ../../ 前缀的 COPY 路径,直接写相对于 server 目录的路径即可:
    # 调整前:COPY ../../data_acquisition_survey_api/ .
    COPY ./data_acquisition_survey_api/ .
    # 调整前:COPY ../../manage.py .
    COPY ./manage.py .
    # 调整前:COPY ../../docker/api/requirements.txt .
    COPY ./docker/api/requirements.txt .
    # 调整前:COPY ../../docker/api/entrypoint.sh $APP_HOME
    COPY ./docker/api/entrypoint.sh $APP_HOME
    
  • 修正 docker-compose.dev.yml 中 web 服务的缩进错误:
    web:
      build:
        context: .
        dockerfile: docker/api/Dockerfile.dev # 此处需缩进到build配置块内
    
  • 确认执行 docker-compose 命令的工作目录为 server 目录(也就是 docker-compose.dev.yml 所在目录),执行以下命令清理缓存重新构建即可:
    docker-compose -f docker-compose.dev.yml build --no-cache
    docker-compose -f docker-compose.dev.yml up
    

内容的提问来源于stack exchange,提问作者Thierry B

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 04:15:04