为什么只复制 .csproj 文件而不复制 Dockerfile 中的其余文件?

kon*_*kri 1 .net docker dockerfile

我是 docker 新手,我试图理解为什么在设置 a 后WORKDIR我必须只复制.csproj文件,而不复制其余文件?提前致谢

FROM mcr.microsoft.com/dotnet/aspnet:5.0 AS build-env
WORKDIR /helloworldconsole

COPY HelloWorld.csproj ./
RUN dotnet restore
Run Code Online (Sandbox Code Playgroud)

cri*_*007 6

它是为了 Docker 构建缓存效率。从文档中

*.csproj 文件被复制并恢复为不同的层。当 docker build 命令构建镜像时,它使用内置缓存。如果自上次运行 docker build 命令以来 *.csproj 文件未发生更改,则不需要再次运行 dotnet Restore 命令。相反,会重用相应 dotnet 恢复层的内置缓存

关于您是否需要复制其余文件 - 是的,您需要,如文档中所示

https://learn.microsoft.com/en-us/aspnet/core/host-and-deploy/docker/building-net-docker-images?view=aspnetcore-5.0#the-dockerfile