spring - 应用程序依赖项(其他应用程序)
问题描述
我们需要使用 docker stack 部署我们的 4 个应用程序(3 个 spring boot 应用程序和 1 个 zookeper)。正如我们的 DevOps 人员告诉我们的那样,无法在 docker stack 中定义哪个应用程序将依赖于另一个应用程序,就像在 docker compose 中一样,所以我们作为开发人员需要在代码中解决它。
你能告诉我该怎么做或最好的方法是什么吗?我们的一个应用程序必须首先启动,因为该应用程序管理数据库(迁移等)。Next 可以在数据库准备好后启动其他应用程序。有任何想法吗?谢谢。
解决方案
如果你想在一个 docker 容器中运行所有 4 个应用程序,你可以参考这篇文章在一个容器中运行多个服务
如果你想docker 组合这 4 个应用程序,你可以参考这个 post startup order,它使用depends_on你的其他应用程序图像
不管是哪种方式,你都必须编写一个脚本来检查你的第一个应用程序是否已经完成管理数据库,你可以参考wait-for-postgres.sh学习如何在 shell 中使用sleep来重复检查你的第一个应用程序地位
我可以建议的更准确的方法是,例如:
- 将共享静态变量设置为 false public static boolean is_app_start = false;
- 完成数据库管理后,将此值更改为 true;
- 在你的控制器中写一个@RequestMapping("/is_app_start")来返回这个值
- 在 shell 脚本中使用curl来检查值
推荐阅读
- reactjs - react js变量无法在警报中显示
- c# - XAML 中的静态资源和动态资源
- sas - 创建一个按 ID 变量的第一个日期递增的新 SAS 变量
- visual-studio - 关闭程序集签名和其他 Visual Studio 全局默认值
- angular - 定义了函数的@input 的默认值
- ffmpeg - 场景检测和连接使我的视频更长(FFMPEG)
- java - 将数据库模型类与其验证相关联的模式
- android - 在 apk 中包含具有不同前缀的文件
- typescript - 在内部匿名函数中引用外部命名空间函数
- ios - 定义 Bundle.main.url 以使用 iOS9 及更高版本 Swift 4 的 Core Data