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

Dockerfile位于src项目中,如何访问同解决方案下的测试项目并执行用例

问题分析与解决

错误原因

Docker构建镜像时,只能访问构建上下文目录内的文件。你的Dockerfile位于src目录,若你在src目录下执行docker build,此时构建上下文是src,../test属于上下文之外的路径,Docker无权访问,所以报错找不到/test。

解决方案

1. 调整构建命令的上下文

切换到解决方案根目录(即包含src和test的上级目录)执行构建命令,同时指定Dockerfile的路径:

docker build -t your-image-name -f src/Dockerfile .

这里的.代表把当前根目录作为构建上下文,这样Docker就能访问到test和src两个目录。

2. 修改Dockerfile内容

调整COPY路径,添加测试执行步骤,修正冗余的COPY操作:

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

# 复制测试项目目录(此时上下文是根目录,直接用test路径)
COPY test ./test
# 复制主项目目录
COPY src ./src

# 分别还原主项目和测试项目的依赖
RUN dotnet restore "./src/src.csproj" -s "https://api.nuget.org/v3/index.json"
RUN dotnet restore "./test/test.csproj" -s "https://api.nuget.org/v3/index.json"

# 执行测试用例
RUN dotnet test "./test/test.csproj" --no-restore

# 后续可按需添加主项目构建、发布步骤
# RUN dotnet build "./src/src.csproj" -c Release -o /app/build
# ...

3. 关键注意点

  • 禁止在src目录下执行构建,必须将上下文设为包含test和src的根目录。
  • 避免重复执行COPY . /app,这会覆盖之前复制的文件,还会增加镜像体积。
  • 先还原依赖再执行测试,确保测试能找到所有必要的NuGet包。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 08:29:53