如何按顺序使用docker stack部署docker swarm用户服务

4

我有一个关于Docker Swarm的问题。

我尝试使用Docker Swarm模式部署我的应用程序。

但是,我无法按顺序安排我的服务启动,尽管我使用了depends_on(它建议不支持docker stack deploy)。

我该如何部署以实现服务按顺序启动?

例如:

Service 1 开始启动

Service 2 等待 Service 1

请帮忙解决。

2个回答

10

Swarm不支持此功能。

Swarm旨在实现高可用性。当出现问题(服务或主机故障)时,服务将按照它们失败的顺序重新启动。

如果您的服务之间存在明确的依赖关系,并且它们无法等待其他服务可用或重新连接,那么您的系统将无法正常工作。

您的服务应该编写成能够在任何时间重新部署任何服务的方式。


0

没有编排系统建议或支持此功能。

所以忘了它,因为这是一个非常糟糕的想法。

应用程序基础设施(这里是容器)不应该依赖于数据库健康状况,但您的应用程序本身必须依赖于数据库健康状况。

你看到区别了吗?

例如,应用程序可以显示错误消息“尚未准备好”或“此功能已禁用,因为elasticsearch已关闭”等等...

即使使用kubernetes实现此模式(称为“wait-for”),您也可以使用initContainer来“等待”另一个服务处于运行状态,但我强烈建议将此逻辑移至您的应用程序中。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接