Docker构建.NET Web API依赖复制失败,报错找不到csproj文件求助
解决.NET Web API Docker构建时找不到项目文件的问题
错误原因
你在/WebApi目录执行docker build -t my-api .时,Docker的构建上下文被限定为当前的/WebApi目录,但Core、DependencyResolution、Infrastructure.Common、Infrastructure.Data这些项目都在/WebApi的上级目录(MyApp.WebApi根目录)里。Docker无法访问构建上下文之外的文件,因此会提示找不到这些.csproj文件。
解决方法
最直接的修复方式是将构建上下文切换到包含所有项目的根目录:
- 切换终端目录到
MyApp.WebApi根目录(即/WebApi的父目录) - 执行以下构建命令,指定Dockerfile的路径:
docker build -t my-api -f WebApi/Dockerfile .
这个命令里的.代表把MyApp.WebApi根目录作为构建上下文,-f WebApi/Dockerfile指定使用WebApi子目录里的Dockerfile。此时Dockerfile里的所有COPY路径(比如Core/Core.csproj)都能在构建上下文里找到对应的文件,可正常完成复制及后续的restore、build步骤。
额外说明
Rider自动生成的Dockerfile是基于解决方案根目录作为构建上下文的前提编写的,只要在正确的目录执行构建命令,就能匹配Dockerfile里的路径逻辑,无需修改Dockerfile内容。
内容的提问来源于stack exchange,提问作者RangerRick
相关产品推荐
相关产品推荐

