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

Windows执行docker build报错:找不到指定文件的解决方案咨询

问题根源

Visual Studio构建Docker镜像时,默认会将**解决方案根目录(MyDevApp-Web)**作为Docker构建上下文,所以Dockerfile里的路径是相对于根目录的,能正常找到所有项目文件。但你直接在MyDevApp目录下执行docker build .时,构建上下文是当前的MyDevApp文件夹,里面没有ApplicationCore、Infrastructure这些同级目录,因此COPY命令会报错找不到文件。

解决方法

方法一:调整Docker构建命令(推荐,无需修改Dockerfile)

执行build命令时,指定解决方案根目录作为构建上下文,同时用-f参数指定Dockerfile的具体路径:

  • 如果你当前终端在MyDevApp目录下,执行:
docker build -t mydevdockerimage -f MyDevApp/Dockerfile ..
  • 如果你当前终端在MyDevApp-Web目录下,执行:
docker build -t mydevdockerimage -f MyDevApp/Dockerfile .

方法二:修改Dockerfile中的路径(适合在MyDevApp目录下直接构建)

因为Dockerfile位于MyDevApp目录,构建上下文是当前目录,所以需要用../引用上级目录的项目文件,修改后的Dockerfile如下:

FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443

FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build
WORKDIR /src
# 用../引用上级目录的项目文件
COPY ["../MyDevApp/MyDevApp.csproj", "MyDevApp/"]
COPY ["../Application.Models/Application.Models.csproj", "Application.Models/"]
COPY ["../ApplicationCore/ApplicationCore.csproj", "ApplicationCore/"]
COPY ["../Infrastructure/Infrastructure.csproj", "Infrastructure/"]
RUN dotnet restore "MyDevApp/MyDevApp.csproj"
# 拷贝整个解决方案内容
COPY ../ .
WORKDIR "/src/MyDevApp"
RUN dotnet build "MyDevApp.csproj" -c Release -o /app/build

FROM build AS publish
RUN dotnet publish "MyDevApp.csproj" -c Release -o /app/publish /p:UseAppHost=false

FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "MyDevApp.dll"]

修改完成后,直接在MyDevApp目录下执行原命令即可:

docker build -t mydevdockerimage .

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 11:27:29