.net 默认的netcore docker compose模板是如何工作的?

.net 默认的netcore docker compose模板是如何工作的?,.net,visual-studio,docker,.net-core,.net,Visual Studio,Docker,.net Core,我想了解docker是如何工作的。今天我尝试使用netcore应用程序DockerRise,因此我点击了dockerize按钮,它为我创建了以下Dockerfile: FROM microsoft/dotnet:2.0-runtime AS base WORKDIR /app FROM microsoft/dotnet:2.0-sdk AS build WORKDIR /src COPY MyProj.sln ./ COPY MyProj.Console/MyProj.Console.cspr

我想了解docker是如何工作的。今天我尝试使用netcore应用程序DockerRise,因此我点击了
dockerize
按钮,它为我创建了以下Dockerfile:

FROM microsoft/dotnet:2.0-runtime AS base
WORKDIR /app

FROM microsoft/dotnet:2.0-sdk AS build
WORKDIR /src
COPY MyProj.sln ./
COPY MyProj.Console/MyProj.Console.csproj MyProj.Console/
COPY MyProj.Core/MyProj.Core.csproj MyProj.Core/
COPY MyProj.Solidity/MyProj.Solidity.csproj MyProj.Solidity/
RUN dotnet restore -nowarn:msb3202,nu1503
COPY . .
WORKDIR /src/MyProj.Console
RUN dotnet build -c Release -o /app

FROM build AS publish
RUN dotnet publish -c Release -o /app

FROM base AS final
WORKDIR /app
COPY --from=publish /app .
ENTRYPOINT ["dotnet", "MyProj.Console.dll"]
我其实不明白这部分:

FROM microsoft/dotnet:2.0-sdk AS build
WORKDIR /src
COPY MyProj.sln ./
COPY MyProj.Console/MyProj.Console.csproj MyProj.Console/
COPY MyProj.Core/MyProj.Core.csproj MyProj.Core/
COPY MyProj.Solidity/MyProj.Solidity.csproj MyProj.Solidity/
RUN dotnet restore -nowarn:msb3202,nu1503

这里的要点是:它是如何工作的?它只是将几个
csproj
文件复制到输出目录,但我没有看到任何
cs
文件。整个程序逻辑在哪里?它应该如何工作?我真的在努力学习它是如何工作的,但我就是搞不懂。你看到你不懂的部分后面的台词了吗?它是

COPY . .
WORKDIR /src/MyProj.Console
RUN dotnet build -c Release -o /app
您指出的零件会复制项目文件,然后执行恢复。这些行复制其余的源代码并进行生成。该生成包含一个隐式还原,由于还原已完成,因此该还原将变为无操作

您指出的行是docker文件中的优化。Docker将查看文件和时间戳,以决定哪些步骤需要重新运行。其余的都藏起来了。您的代码可能会在每次重建时发生更改,但您的项目文件更改很少。因此,docker可以跳过每个构建的恢复。但是您的源代码会经常更改,因此它只会构建您的源代码,而不是在每次代码更改时进行恢复和重建