【发布时间】:2018-09-09 02:46:07
【问题描述】:
我目前有一个常规 SpringBoot 应用程序,我将其拆分为 2 个应用程序,以便从 Spring Cloud Dataflow 和 Spring Batch 中获得一些好处:
- 一个 SpringBoot 应用,负责通过 Spring Cloud Dataflow REST API 检测特定事件并启动新的 Batch 任务
- 一个 SpringBoot + Spring Batch 任务将从我们 Nexus 上的 jar 注册到 SCDF,并轮询调用新事件。
我已经让这两个应用程序都可以运行,并且我正在开始移动。现在我担心的是,这个批处理应用程序有一个application.yml 文件,其中包含可以(不应该,但可以)经常更新的数据源和其他重要属性。
在我目前的方法中,我的应用程序被打包在一个 Docker 容器中,我启动我的应用程序时说出最终的 application.yml 文件在哪里。这允许我在每个环境中拥有一个特定的.yml 文件,因为这里不允许我使用 Spring Profiles 来组织每个环境的变量。开发人员不应该知道 Prod vars。
这是我的 Dockerfile 的入口点:
ENTRYPOINT ["java","-Dspring.profiles.active=docker","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar", "--spring.config.location=classpath:/application.yml,file:/tmp/config/application.yml"]
使用这种 SCDF 任务的新方法来保持我的属性文件外部化的最佳方法是什么?我应该去 Spring Cloud Config 吗?将--spring.config.location 作为工作参数传递真的有效吗?
记住我上面提到的限制,Spring Cloud 是否仍然可以作为一种可能的解决方案来解决?
提前感谢您的帮助!
最好的问候,
恩里科
【问题讨论】:
标签: java spring-batch spring-cloud spring-cloud-config spring-cloud-dataflow