Синхронизируйте независимые клиентские сборки с одним сборочным док-сервером
У меня есть пара клиентских приложений. Для каждого из них у меня есть конвейер сборки, который получает последний код, компилирует его и выводит результат на dist
папка (содержащая только файлы HTML и JS).
Эти dist
папки синхронизируются, используя том докера, с веб-сервером (nginx
) контейнер, в котором фактически размещено клиентское приложение.
В результате мой клиент всегда "включен", и мне нужно только обновить dist
Папка любого клиента, чтобы развернуть его, и никогда не нужно связываться с контейнером веб-сервера.
Однако я хочу перевести мое развертывание на другой подход, состоящий только в создании образов докеров в конвейерах (изменение кода) и их использовании по требованию при развертывании среды.
Проблема заключается в том, как создать контейнер веб-сервера, в то время как я не хочу перестраивать все клиенты при каких-либо изменениях, и при этом я не хочу сохранять встроенный вывод в системе контроля версий. Какой будет лучший подход?
1 ответ
Вы можете рассмотреть многоэтапную сборку с:
- первый этап - сборка вашего веб-сервера (который никогда не меняется, поэтому он кэшируется)
- второй этап - сборка вашей папки dist, к которой вы добавляете веб-сервер первого этапа.
Конечным результатом является изображение с веб-сервером и статическими файлами для обслуживания (вместо файлов, находящихся в томе), с перестраиванием только статических файлов.