Incorrect build context for build-api

用户在 Dify 自托管(Source 方式)环境下,使用 make build-api 命令从仓库根目录构建 Docker 镜像时触发。

Incorrect build context for build-api

Incorrect build context for build-api

快速结论:该错误发生在通过 make build-api 构建 Dify API Docker 镜像时。api/Dockerfile 已更新为以仓库根目录为构建上下文,但 Makefile 中的 build-api 目标仍将 ./api 作为上下文传递,导致 COPY 命令找不到文件。优先排查 Makefile 中的构建上下文路径。

问题场景

用户在 Dify 自托管(Source 方式)环境下,使用 make build-api 命令从仓库根目录构建 Docker 镜像时触发。

报错原文

Building API Docker image: ghcr.io/quantumghost/dify:main...
docker build -t ghcr.io/quantumghost/dify:main ./api
...
 => ERROR [packages 2/6] COPY api/pyproject.toml api/uv.lock ./
 => ERROR [packages 3/6] COPY api/providers ./providers
...

原因分析

这是一个已确认的 bug。提交 8f197c5a0a(2026-05-20)更新了 api/Dockerfile,使其 COPY 命令引用了 api/dify-agent/ 为前缀的路径,因此期望构建上下文为仓库根目录。然而,Makefile 中的 build-api 目标仍然传递 ./api 作为构建上下文,导致 Docker 无法正确解析 COPY api/pyproject.toml api/uv.lock ./ 等指令。

环境排查

  • Dify 版本:main 分支
  • Docker CLI(确认 docker build 命令可用)
  • Makefile:检查 build-api 目标中 docker build 的上下文路径
  • api/Dockerfile 是否已包含最新更改(参考 d315ae3b809b196e2bef66a0e0db44dbc716c91f

解决步骤

  1. 修复 Makefile(推荐):Makefilebuild-api 目标的 docker build 命令改为显式指定 Dockerfile 并使用仓库根目录为上下文:
    docker build -f api/Dockerfile -t $(API_IMAGE):$(VERSION) .

    此模式与 build-web 目标一致。

  2. 临时工作区:若不修改 Makefile,可直接从仓库根目录手动执行以下命令构建:
    docker build -f api/Dockerfile -t ghcr.io/quantumghost/dify:main .

验证方法

再次执行 make build-api -e API_IMAGE=your-registry/dify -e VERSION=your-version 或手动构建命令,观察 Docker 构建过程是否成功完成且无 ERROR [packages 2/6]ERROR [packages 3/6] 错误。

参考来源

langgenius/dify #37430

GamsGo AI

AI 工具推荐

想把多个 AI 模型放在一个入口?

GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。

了解 GamsGo AI

推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。

celebrityanime
celebrityanime
文章: 7864

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注