У нас есть несколько приложений, которые являются частью более крупного приложения.
Каждое из этих приложений имеет образ Docker, созданный для каждого коммита.
Я хотел бы, чтобы вы использовали режим роя докеров и стеки докеров для автоматического развертывания/обновления этого более крупного приложения.
Давайте притворимся, что у меня есть этот компоновочный файл (неактуальные части опущены)
version: '3'
services:
product_service:
image: myregistry.com/product_service:c8372d
..
cart_service:
image: myregistry.com/cart_service:ee7f32
..
Когда я вношу изменения в репозиторий службы корзины, я хотел бы, чтобы стек обновлял только cart_service
, но оставлял product_service
закрепленным в его текущей версии. Кроме того, когда сервис продукта обновляется, я хотел бы иметь возможность обновлять только этот сервис, но оставить сервис корзины в его текущей закрепленной версии.
Какие у меня варианты в этом случае?
Что я могу придумать:
- делать некоторые причудливые вещи и регенерировать файл компоновки при фиксации и изменять только те части, которые мне нужны.
- не используйте
docker stack deploy
и вместо этого используйте старыйdocker service create
- какой-то тип переменной среды, передаваемой в файл компоновки (проблема здесь в том, что каждая служба все равно должна знать текущую версию других служб, верно?)
- использовать другой стек для каждой службы (что-то не так с этим или проблемы?)
Я что-то упускаю из виду? Разве такое строительство не было задумано? Какой подход здесь лучше?