我是 docker 新手,我想知道为什么在设置 WORKDIR
后我必须只复制 .csproj
文件,而不是其他文件?提前致谢
FROM mcr.microsoft.com/dotnet/aspnet:5.0 AS build-env
WORKDIR /helloworldconsole
COPY HelloWorld.csproj ./
RUN dotnet restore
答案 0 :(得分:1)
它是为了 Docker 构建缓存效率。来自文档
<块引用>*.csproj 文件被复制和恢复为不同的层。当 docker build 命令构建映像时,它使用内置缓存。如果 *.csproj 文件自上次运行 docker build 命令后没有更改,则不需要再次运行 dotnet restore 命令。而是重用了对应 dotnet 还原层的内置缓存
关于是否需要复制其余文件 - 是的,您需要复制,如文档中所示