【问题标题】:Application dependencies (another apps)应用程序依赖项(其他应用程序)
【发布时间】:2019-02-05 17:34:41
【问题描述】:

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

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

【问题讨论】:

  • 在多个应用程序之间共享数据库是一种反模式。
  • 我们公司的应用程序都是这样工作的,很遗憾,我对此无能为力。
  • 为什么它们是不同的应用程序,因为显然它们不是。
  • @M.Deinum 共享数据库的应用很少,因为包含静态数据。

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


【解决方案1】:

如果你想在一个docker容器中运行所有4个应用,可以参考这篇帖子Run multiple services in a container

如果你想docker compose这4个应用程序,你可以参考这篇文章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 来检查值

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-04-26
    • 2018-03-26
    • 2014-02-22
    • 1970-01-01
    • 2021-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多