我有一个正在执行的 docker compose (3) 文件docker stack deploy
。我在 Jenkins 管道中执行此操作。
我处理标签的方式是我设置了一个环境变量API_TAG
,并且(相关部分)相应的 docker compose 文件看起来像这样。
version: '3'
services:
api:
image: registry:5000/api:${API_TAG}
如何处理我不只是构建的堆栈/docker compose 文件中其他服务的标签?我正在处理的管道只构建一个 api 应用程序,而不是它所依赖的三个数据库。但是,这些数据库也有特定的标签(不仅仅是latest
)。我真的需要在 swarm 集群中查询当前正在运行的服务和这些数据库的标签,这样docker stack deploy
就不会弄乱任何东西吗?
理想情况下,您的堆栈撰写文件应该包含您作为该应用程序的容器运行的所有服务,所以是的,如果您有一个需要包含的数据库容器,它应该在撰写文件中,并且您管理在其中运行的版本/标签撰写文件。
这里的想法是您可以设计一个可用于本地开发和集群部署的组合文件(或组合文件和覆盖文件) 。
docker-compose up
docker stack deploy
另一种但 IMO 更复杂的方法是在其 on compose/stack 文件中运行其他服务,并使用手动创建的覆盖网络来确保它们都在同一个 docker 虚拟网络上。