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

时间:2021-05-05 13:06:17

标签: .net docker dockerfile

我是 docker 新手,我想知道为什么在设置 WORKDIR 后我必须只复制 .csproj 文件,而不是其他文件?提前致谢

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

COPY HelloWorld.csproj ./
RUN dotnet restore

1 个答案:

答案 0 :(得分:1)

它是为了 Docker 构建缓存效率。来自文档

<块引用>

*.csproj 文件被复制和恢复为不同的层。当 docker build 命令构建映像时,它使用内置缓存。如果 *.csproj 文件自上次运行 docker build 命令后没有更改,则不需要再次运行 dotnet restore 命令。而是重用了对应 dotnet 还原层的内置缓存

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

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