具有Docker多阶段构建功能的多项目dotnet核心应用程序

时间:2019-10-15 20:50:24

标签: docker .net-core docker-multi-stage-build

我正在尝试优化对docker的dotnet核心应用部署。我们有一个相当大的dotnet核心解决方案,包含约40个项目。其中有12个是真实的应用程序,其余的是libs,util,db模型等。

所以现在我想对这12项单独服务进行泊坞服务。当然,仅复制$ service目录是不够的,因为它会丢失依赖项。

当前的构建过程只是复制整个解决方案,构建单个服务并完成。但是在这种情况下,这12个单独的服务容器都重新构建了相同的依赖关系(因为在创建的容器之间没有链接)。

现在,我认为借助多阶段构建可以更好地解决此问题。因此,第一阶段只是复制整个解决方案,并使用dotnet build进行构建。之后,各个阶段只需进入$ service项目目录并运行dotnet publish -o ...

这很好用(尽管维护多阶段dockerfile并不是很好)。

现在,我想将dotnet builddotnet publish步骤分开,以享受Docker构建缓存的好处。但是我似乎找不到办法,只能将.sln文件和所有嵌套的* .csproj文件(包括其文件夹结构)复制到我的docker build上下文中。这样我就可以运行dotnet restore。复制整个解决方案并运行dotnet publish可以防止对解决方案中任何文件的任何更改都对docker build缓存造成冲击。

有人知道如何解决这个问题吗?

0 个答案:

没有答案
相关问题