首页 > 解决方案 > 如何在 docker 中加快构建 .net 解决方案

问题描述

我目前的设置:

App.sln
src\
----BaseProject\
-------------Dockerfile
-------------BaseProject.csproj
----ProjectA\
-------------Dockerfile
-------------ProjectA.csproj (references BaseProject)
----ProjectB\
-------------Dockerfile
-------------ProjectB.csproj (references BaseProject)
----ProjectC\
-------------Dockerfile
-------------ProjectC.csproj (references BaseProject)

现在每个项目都有自己的 dockerfile,并且容器是在云端并行构建的。我想知道是否可以重用构建输出来加快构建过程。

我正在使用构建整个解决方案docker compose build --parallel,并将每个项目发布为单独的容器:

FROM sdk_image as build
RUN dotnet restore
RUN dotnet build --no-restore
RUN dotnet publish --no-build --no-restore  -o output

FROM runtime_image as runtime
COPY build/ouput .
RUN dotnet run myapp.dll

我已经尝试过将整个构建缓存在单层中,但显然输出程序集太大了,以至于复制它们比实际编译需要更多时间。

我想知道是否有可能加快这样的构建,也许使用 docker 卷进行 nuget 或构建或类似机制,或者可能从构建输出中删除不必要的文件?

标签: c#.netdockerdockerfile

解决方案


推荐阅读