使用平台进行jar包部署,使用到外部配置文件,请问在平台中怎么操作?

请完善如下信息,方便我们协助排查问题
使用平台进行jar包部署,使用到外部配置文件,请问在平台中怎么操作?

Rainbond版本:
操作系统:
内核版本:
环境:(云服务商,虚拟机等)
节点配置:
安装类型:
如何复现:
尝试解决:
相关截图:
是否重新执行安装:

集群或应用问题额外需要提供如下信息:

  1. 集群是否正常(grctl cluster)
  2. 应用是否正常 (grctl service get <应用别名> -t <租户>)
  3. 应用监听端口是否正确,是否开启了健康检测,持久化目录是否设置正确
  4. 操作流程,能否复现
  5. 是否尝试过更新部分组件的镜像,是否有效
  6. 控制台报错或者异常请确定哪个接口报异常,F12

抄送: @dazuimao1990

在这里,我们推荐使用平台的配置文件挂载功能

首先,在指定的位置挂载一个我们需要的配置文件,比如 /config/application-dev.yaml。在jar包服务组件的 环境设置 > 配置文件设置 中添加一个配置文件。

具备了这个配置文件之后呢,我们需要让我们的 java 服务组件在启动的时候加载到这个配置文件,那么,就需要去更改 构建源 中的 启动命令 :

web: java $JAVA_OPTS -jar target/java-maven-demo-0.0.1.jar --spring.profiles.active=dev --spring.config.location=/config/application-dev.yml --debug

在默认的 jar 包路径之后,添加参数 --spring.config.location 指向之前挂载的配置文件,修改过构建源一页的配置项, :stop_sign:需要构建使之生效:stop_sign:

在这里有几处 java Spring boot 项目的坑点需要注意:

  • --spring.config.location 最好指向文件路径,而不是只到目录层级。
  • --spring.config.location 这种参数,要写在 jar 包路径之后,和 -Dspring 参数的生效位置不一样。https://stackoverflow.com/questions/31038250/setting-active-profile-and-config-location-from-command-line-in-spring-boot
  • 注意挂载配置文件的格式,格式错了,即使加载,也不会生效。
  • 外部指定的配置文件,不要和 jar 包内部存在的配置文件同名,同名则 jar 包内部配置文件优先级更高。
  • 启动命令最后添加的 --debug 指令,可以让日志打印加载的所有配置文件的路径,去那里确定你的配置文件是否被识别到。具体如下: