【问题标题】:Spring Boot not loading system env vars into application.propertiesSpring Boot 未将系统环境变量加载到 application.properties
【发布时间】:2017-12-13 22:14:41
【问题描述】:

我已经在我的机器上导出了一些简单的数据库凭据作为 ENV 变量。

export MYSQL_USER=root
export MYSQL_PASS=pass

我正在尝试将这些动态加载到我的配置文件中,但无济于事。我开始相信这是因为应用程序在 TomCat 容器内运行,因此与机器环境变量隔离。

开发环境应用程序属性文件

spring.datasource.username = ${MYSQL_USER}

但是,它仍然被视为${MYSQL_USER} 的纯文本。 Spring Boot 是否具有读取系统环境变量的能力?

【问题讨论】:

  • 您能提供一个示例项目吗?您确定运行 SpringBoot 应用程序的配置文件/用户正确加载了这些值吗?例如,您是否将这些导出添加到“/etc/profile.d/mysql.sh”文件中?
  • 我只是在终端中导出了这些,如上所示,但我不知道如何将系统环境变量实际加载到 Spring Boot 中。
  • 好的,如果您打开另一个终端并回显这些变量而不手动导出它们,会显示什么?
  • 用户名显示在新的终端实例中

标签: java spring-boot


【解决方案1】:

在使用 $ 符号将操作系统环境变量放入我的 application.properties/yml 时,我也遇到了同样的问题。为了解决这个问题,我将变量定义为应用程序服务器(tomcat/jboss 等)。那么只有 application.properties/yml 可以得到它们。 希望这会有所帮助。

【讨论】:

  • 你能解释一下你是怎么做到的吗?
  • 有很多方法可以做到这一点,具体取决于应用服务器。当您使用 tomcat 时,您可以如下操作: 在 Tomcat 的 /bin/ 下创建一个文件 - setenv.sh- (touch setenv.sh) 然后打开 (sudo nano setenv.sh) 并写入 #!/bin/sh导出 JAVA_OPTS="-DMYSQL_USER=myuser"
  • 确保重启tomcat :)
猜你喜欢
  • 2020-09-18
  • 1970-01-01
  • 2021-08-23
  • 2016-11-15
  • 2016-06-08
  • 2016-03-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多