我们需要使用docker堆栈部署我们的4个应用程序(3个spring-boot应用程序和1个zookeper)。正如我们的DevOps人员告诉我们的那样,没有办法在docker堆栈中定义哪个应用程序将依赖于另一个应用程序,就像在docker compose中一样,所以我们作为开发人员需要在代码中解决这个问题。
你能告诉我怎么做吗?或者最好的方法是什么?我们的一个应用程序必须首先启动,因为该应用程序管理数据库(迁移等)。Next可以在数据库准备好后启动其他应用程序。有什么想法吗?谢谢
如果你想在一个docker容器中运行所有4个应用程序,你可以参考这个postRun multiple services in a container
如果你想docker撰写这4个应用程序,你可以参考这个启动后的订单,它使用dependents你的其他应用程序图像
不管是什么方法,你都必须写一个脚本来检查你的第一个应用程序是否已经完成了数据库管理,你可以参考等待postgres.sh来学习如何在shell中使用睡眠反复检查你的首个应用程序状态
我可以建议的更准确的方法是例如:
- 将共享静态变量设置为false公共静态布尔值is_app_start=false
- 完成数据库管理后,将此值更改为true
- 在控制器中写入@RequestMapping("/is_app_start")以返回该值
- 在shell脚本中使用curl来检查值