将独立客户端构建输出同步到一个 docker 网络服务器构建

Sync independent clients build outputs to one docker web server build

我有几个客户端应用程序。对于每一个,我都有一个获取最新代码的构建管道,对其进行编译并将结果绘制到 dist 文件夹(仅包含 html 和 js 文件)。

这些 dist 文件夹使用 docker 卷同步到实际托管客户端应用程序的 Web 服务器 (nginx) 容器。

结果是我的客户端总是"up",我只需要更新任何客户端的dist文件夹来部署它,而永远不需要弄乱网络服务器容器。

但是,我想将我的部署转移到另一种方法,即仅在管道上构建 docker 图像(代码更改)并在部署环境时按需使用它们。

问题是如何构建 Web 服务器容器,而我不想在任何更改时重建所有客户端,也不想将构建的输出存储在源代码管理中。什么是最好的方法?

您可以考虑 multi-stage build

  • 第一阶段是构建您的网络服务器(永远不会改变,所以它被缓存)
  • 第二阶段是构建您的 dist 文件夹,将第一阶段的 Web 服务器添加到该映像。

最终结果是一个包含 Web 服务器和要提供的静态文件(而不是那些文件在一个卷中)的图像,只有静态文件被重建。