Spring 没有从 Openshift 获取 env 变量

Spring doesn't get env variable from Openshift

提问人:santhiago017 提问时间:11/8/2023 最后编辑:santhiago017 更新时间:11/8/2023 访问量:42

问:

我有 Spring Boot 应用程序,当我向 Git 提交一些更改时,它会自动部署到 Openshift。 我需要外部化数据源配置。我正在尝试使用环境变量作为解决方案。

这是我的application.yaml

...

spring:
    datasource:
        driver-class-name: oracle.jdbc.OracleDriver
        url: jdbc:oracle:thin:@10.xxx.xxx.xxx:1521/DBASE
        username: ****
        password: ****

...

我不能在application.yaml中拥有用户名和密码,因为构建是由Fortify扫描的,Fortify可以识别漏洞。 尝试使用环境变量,我首先在 Windows 中使用环境变量进行了测试。我在 Windows 中添加了这两个环境:

SPRING_DATASOURCE_USERNAME
SPRING_DATASOURCE_PASSWORD

我已将application.yaml更改为此并且工作正常。

...

spring:
    datasource:
        driver-class-name: oracle.jdbc.OracleDriver
        url: jdbc:oracle:thin:@10.xxx.xxx.xxx:1521/DBASE

...

我尝试在 Openshift 中将相同的环境添加到 DeploymentConfig,但没有用。Spring 找不到我在 Openshift 中创建的环境变量。

这是我在 Openshift DeploymentConfigs 中的配置:

在此处输入图像描述

知道我该如何解决这个问题?

Spring-Boot 部署 OpenShift Fortify

评论


答:

0赞 Huong 11/8/2023 #1

您需要在 的配置中添加环境变量。例如application.yaml

spring:
    datasource:
        driver-class-name: oracle.jdbc.OracleDriver
        url: jdbc:oracle:thin:@10.xxx.xxx.xxx:1521/DBASE
        username: ${SPRING_DATASOURCE_USERNAME}
        password: ${SPRING_DATASOURCE_PASSWORD}

评论

0赞 M. Deinum 11/8/2023
这不应该是必需的,因为 Sprng Boot 将解释环境变量。已经。