我们有几个应用程序是更大应用程序的一部分。
这些应用程序中的每一个都有一个在每次提交时构建的 Docker 映像。
我希望您使用 docker swarm 模式和 docker stacks 来自动部署/更新这个更大的应用程序。
让我们假装我有这个撰写文件(留下不相关的部分)
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
- 某种类型的环境变量传递到 compose 文件中(这里的问题是每个服务仍然必须知道其他服务的当前版本对吗?)
- 为每个服务使用不同的堆栈(这有什么问题或问题吗?)
我忽略了什么吗?这样的建筑不是故意的吗?这里有什么更好的方法?