应用程序依赖性(另一个应用程序)

时间:2018-08-30 17:39:26

标签: spring docker spring-boot apache-zookeeper spring-cloud-zookeeper

我们需要使用docker stack部署我们的4个应用程序(3个spring boot应用程序和1个zookeper)。正如我们的DevOps家伙告诉我们的那样,没有办法在docker堆栈中定义哪个应用程序将依赖于另一个应用程序,例如docker compose,因此,作为开发人员,我们需要在代码中解决它。

您能告诉我怎么做或最好的方法是什么?必须首先启动我们的一个应用程序,因为该应用程序管理数据库(迁移等)。准备数据库后,Next可以启动其他应用程序。有任何想法吗?谢谢。

1 个答案:

答案 0 :(得分:0)

如果您想在一个Docker容器中运行所有4个应用程序,则可以参考这篇文章Run multiple services in a container

如果您要泊坞窗组成这四个应用程序,则可以参考此帖子startup order,它使用 depends_on 您的其他应用程序图像

无论采用哪种方式,都必须编写脚本来检查第一个应用程序是否已经完成了对数据库的管理,您可以参考 wait-for-postgres.sh 了解如何在外壳中使用 sleep 反复检查您的第一个应用程序状态

例如,我可以建议的更精确的方法是

  1. 将共享的静态变量设置为false 公共静态布尔值is_app_start = false;
  2. 完成数据库管理后,将此值更改为true;
  3. 在控制器中编写一个 @RequestMapping(“ / is_app_start”)以返回该值
  4. 在您的Shell脚本中使用 curl 来检查值