执行docker build时报错‘file not found in build context’求解决
解决Docker Build中"文件不在构建上下文或被.dockerignore排除"的错误
针对你遇到的这个错误,结合提供的Dockerfile,可从以下几个方向排查解决:
1. 确认项目文件路径匹配
Dockerfile中第一行COPY指令是COPY ["examroom.itembanking-main.csproj", "./"],需要确保:
- 执行
docker build命令时,终端当前工作目录下确实存在examroom.itembanking-main.csproj文件 - 如果项目文件在子目录(比如
src/下),要把COPY路径改成对应相对路径,比如COPY ["src/examroom.itembanking-main.csproj", "./"]
2. 检查.dockerignore规则
查看当前目录下的.dockerignore文件,确认没有以下类似规则:
*.csproj:会排除所有csproj文件examroom.itembanking-main.csproj:直接排除目标文件.或*:排除上下文内所有文件
如果存在这些规则,删除对应的条目即可。
3. 确保构建上下文包含目标文件
执行docker build命令时,最后一个参数是构建上下文(比如docker build .中的.代表当前目录),目标csproj文件必须在这个上下文目录范围内。如果文件在上级目录,要么将Dockerfile移动到包含该文件的目录,要么调整构建上下文路径(比如docker build ../)。
4. 简化Dockerfile路径配置
你的Dockerfile中WORKDIR "/src/."可以简化为WORKDIR /src,不影响功能但更规范。
附你提供的Dockerfile:
FROM mcr.microsoft.com/dotnet/aspnet:5.0 AS base WORKDIR /app EXPOSE 80 FROM mcr.microsoft.com/dotnet/sdk:5.0 AS build WORKDIR /src COPY ["examroom.itembanking-main.csproj", "./"] RUN dotnet restore "examroom.itembanking-main.csproj" COPY . . WORKDIR "/src/." RUN dotnet build "examroom.itembanking-main.csproj" -c Release -o /app/build FROM build AS publish RUN dotnet publish "examroom.itembanking-main.csproj" -c Release -o /app/publish FROM base AS final WORKDIR /app COPY --from=publish /app/publish . ENTRYPOINT ["dotnet", "examroom.itembanking-main.dll"]
内容的提问来源于stack exchange,提问作者Sunaina
相关产品推荐
相关产品推荐

