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

Github Actions构建容器时出现构建上下文路径越界错误

问题

我有一个.NET多项目解决方案正在进行容器化,尝试通过Github Actions实现自动化构建。简化后的文件结构如下:

repo/
├── Solution.sln
└── src/
    ├── Core/
    │   └── Project.Domain/
    │       └── Project.Domain.csproj
    └── Presentation/
        └── Project.API/
            ├── Project.API.csproj
            └── Dockerfile

API项目依赖Domain项目,且该解决方案中将有多个Dockerfile。我的Dockerfile开头内容如下:

FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build-env

WORKDIR /App

COPY ../../../ ./

# 其余构建步骤...

在本地(Windows系统Git Bash搭配Docker Desktop)使用以下命令构建容器可成功:

$ pwd
/path/to/repo
$ docker build -f ./src/Presentation/Project.API/Dockerfile .

但在Github Actions工作流中执行相同构建命令时,出现错误:

Step 3/11 : COPY ../../../ ./
COPY failed: forbidden path outside the build context: ../../../ ()

原因分析

本地构建成功是因为Windows环境下的Docker Desktop对相对路径的解析存在宽松处理:当你指定构建上下文为repo根目录(.)时,即便Dockerfile里写了../../../,实际还是指向上下文内的根目录,没有超出边界。

而Github Actions的运行环境是Linux系统,Docker对路径的解析严格遵循规则:从Dockerfile所在的src/Presentation/Project.API目录向上回溯三层,已经超出了构建上下文(repo根目录)的范围,因此触发"禁止访问上下文外路径"的安全限制。

修复方案

方案1:简化COPY指令(推荐)

既然构建上下文是repo根目录,直接基于上下文根路径编写COPY指令,无需向上回溯:

FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build-env

WORKDIR /App

# 复制构建上下文(repo根目录)的所有内容到容器内的/App
COPY . ./

# 后续恢复依赖、编译等步骤...

这种方式在本地和Github Actions环境下都能正常工作,避免路径解析问题。

方案2:精细化复制(优化构建效率)

如果不想复制整个repo目录,可以只复制必要的文件,减少构建上下文大小:

FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build-env

WORKDIR /App

# 复制解决方案文件
COPY Solution.sln ./
# 复制Domain项目目录
COPY src/Core/Project.Domain/ ./src/Core/Project.Domain/
# 复制API项目目录
COPY src/Presentation/Project.API/ ./src/Presentation/Project.API/

# 恢复依赖:
RUN dotnet restore Solution.sln
# 编译项目:
RUN dotnet build src/Presentation/Project.API/Project.API.csproj -c Release -o /App/build

确保构建命令正确

在Github Actions工作流中,保持和本地一致的构建命令,确保构建上下文是repo根目录:

docker build -f ./src/Presentation/Project.API/Dockerfile .

内容的提问来源于stack exchange,提问作者Sarmad Georgie

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 12:02:42