我有一个关于Docker Swarm的问题。
我尝试使用Docker Swarm模式部署我的应用程序。
但是,我无法按顺序安排我的服务启动,尽管我使用了depends_on(它建议不支持docker stack deploy)。
我该如何部署以实现服务按顺序启动?
例如:
Service 1 开始启动
Service 2 等待 Service 1
请帮忙解决。
我有一个关于Docker Swarm的问题。
我尝试使用Docker Swarm模式部署我的应用程序。
但是,我无法按顺序安排我的服务启动,尽管我使用了depends_on(它建议不支持docker stack deploy)。
我该如何部署以实现服务按顺序启动?
例如:
Service 1 开始启动
Service 2 等待 Service 1
请帮忙解决。
Swarm不支持此功能。
Swarm旨在实现高可用性。当出现问题(服务或主机故障)时,服务将按照它们失败的顺序重新启动。
如果您的服务之间存在明确的依赖关系,并且它们无法等待其他服务可用或重新连接,那么您的系统将无法正常工作。
您的服务应该编写成能够在任何时间重新部署任何服务的方式。
没有编排系统建议或支持此功能。
所以忘了它,因为这是一个非常糟糕的想法。
应用程序基础设施(这里是容器)不应该依赖于数据库健康状况,但您的应用程序本身必须依赖于数据库健康状况。
你看到区别了吗?
例如,应用程序可以显示错误消息“尚未准备好”或“此功能已禁用,因为elasticsearch已关闭”等等...
即使使用kubernetes实现此模式(称为“wait-for”),您也可以使用initContainer
来“等待”另一个服务处于运行状态,但我强烈建议将此逻辑移至您的应用程序中。