将独立客户端构建输出同步到一个 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 服务器和要提供的静态文件(而不是那些文件在一个卷中)的图像,只有静态文件被重建。
我有几个客户端应用程序。对于每一个,我都有一个获取最新代码的构建管道,对其进行编译并将结果绘制到 dist
文件夹(仅包含 html 和 js 文件)。
这些 dist
文件夹使用 docker 卷同步到实际托管客户端应用程序的 Web 服务器 (nginx
) 容器。
结果是我的客户端总是"up",我只需要更新任何客户端的dist
文件夹来部署它,而永远不需要弄乱网络服务器容器。
但是,我想将我的部署转移到另一种方法,即仅在管道上构建 docker 图像(代码更改)并在部署环境时按需使用它们。
问题是如何构建 Web 服务器容器,而我不想在任何更改时重建所有客户端,也不想将构建的输出存储在源代码管理中。什么是最好的方法?
您可以考虑 multi-stage build:
- 第一阶段是构建您的网络服务器(永远不会改变,所以它被缓存)
- 第二阶段是构建您的 dist 文件夹,将第一阶段的 Web 服务器添加到该映像。
最终结果是一个包含 Web 服务器和要提供的静态文件(而不是那些文件在一个卷中)的图像,只有静态文件被重建。