Синхронизируйте независимые клиентские сборки с одним сборочным док-сервером

У меня есть пара клиентских приложений. Для каждого из них у меня есть конвейер сборки, который получает последний код, компилирует его и выводит результат на dist папка (содержащая только файлы HTML и JS).

Эти dist папки синхронизируются, используя том докера, с веб-сервером (nginx) контейнер, в котором фактически размещено клиентское приложение.

В результате мой клиент всегда "включен", и мне нужно только обновить dist Папка любого клиента, чтобы развернуть его, и никогда не нужно связываться с контейнером веб-сервера.

Однако я хочу перевести мое развертывание на другой подход, состоящий только в создании образов докеров в конвейерах (изменение кода) и их использовании по требованию при развертывании среды.

Проблема заключается в том, как создать контейнер веб-сервера, в то время как я не хочу перестраивать все клиенты при каких-либо изменениях, и при этом я не хочу сохранять встроенный вывод в системе контроля версий. Какой будет лучший подход?

1 ответ

Решение

Вы можете рассмотреть многоэтапную сборку с:

  • первый этап - сборка вашего веб-сервера (который никогда не меняется, поэтому он кэшируется)
  • второй этап - сборка вашей папки dist, к которой вы добавляете веб-сервер первого этапа.

Конечным результатом является изображение с веб-сервером и статическими файлами для обслуживания (вместо файлов, находящихся в томе), с перестраиванием только статических файлов.

Другие вопросы по тегам