首页 > 解决方案 > 应用程序依赖项(其他应用程序)

问题描述

我们需要使用 docker stack 部署我们的 4 个应用程序(3 个 spring boot 应用程序和 1 个 zookeper)。正如我们的 DevOps 人员告诉我们的那样,无法在 docker stack 中定义哪个应用程序将依赖于另一个应用程序,就像在 docker compose 中一样,所以我们作为开发人员需要在代码中解决它。

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

标签: springdockerspring-bootapache-zookeeperspring-cloud-zookeeper

解决方案


如果你想在一个 docker 容器中运行所有 4 个应用程序,你可以参考这篇文章在一个容器中运行多个服务

如果你想docker 组合这 4 个应用程序,你可以参考这个 post startup order,它使用depends_on你的其他应用程序图像

不管是哪种方式,你都必须编写一个脚本来检查你的第一个应用程序是否已经完成管理数据库,你可以参考wait-for-postgres.sh学习如何在 shell 中使用sleep来重复检查你的第一个应用程序地位

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

  1. 将共享静态变量设置为 false public static boolean is_app_start = false;
  2. 完成数据库管理后,将此值更改为 true;
  3. 在你的控制器中写一个@RequestMapping("/is_app_start")来返回这个值
  4. 在 shell 脚本中使用curl来检查值

推荐阅读