小编S M*_*S M的帖子

在Spring Boot的application.properties中使用env变量

我们正在开发一个Spring Boot Web应用程序,我们使用的数据库是MySql ;

  • 我们的设置是我们首先在本地测试它(意味着我们需要在我们的PC上安装MySql);

  • 然后我们推向Bitbucket ;

  • Jenkins自动检测到对Bitbucket的新推送并对其进行构建(对于Jenkins mvn构建要通过,我们还需要在运行Jenkins的虚拟机上安装MySql).

  • 如果Jenkins构建了传递,我们将代码推送到OpenShift上的应用程序(使用Jenkins上的Openshift部署插件).

我们可能已经弄明白的问题是:

  • application.properties我们不能硬编码MySql信息.由于我们的项目将在3个不同的地方运行(本地,JenkinsOpenShift),我们需要使数据源字段动态化application.properties(我们知道有不同的方法,但我们现在正在研究这个解决方案).

    spring.datasource.url = 
    spring.datasource.username = 
    spring.datasource.password = 
    
    Run Code Online (Sandbox Code Playgroud)

我们提出的解决方案是在本地和Jenkins vm中创建系统环境变量(以与OpenShift命名的方式命名它们)并分别为它们分配正确的值:

export OPENSHIFT_MYSQL_DB_HOST="jdbc:mysql://localhost"
export OPENSHIFT_MYSQL_DB_PORT="3306"
export OPENSHIFT_MYSQL_DB_USERNAME="root"
export OPENSHIFT_MYSQL_DB_PASSWORD="123asd"
Run Code Online (Sandbox Code Playgroud)

我们做到了这一点并且有效.我们还检查Map<String, String> env = System.getenv();过环境变量可以变成java变量:

String password = env.get("OPENSHIFT_MYSQL_DB_PASSWORD");   
String userName = env.get("OPENSHIFT_MYSQL_DB_USERNAME");   
String sqlURL = env.get("OPENSHIFT_MYSQL_DB_HOST"); 
String sqlPort = env.get("OPENSHIFT_MYSQL_DB_PORT");
Run Code Online (Sandbox Code Playgroud)

现在唯一剩下的就是我们需要在我们中使用这些java变量application.properties,这就是我们遇到的问题.

在哪个文件夹,以及我们如何,需要分配password,userName, …

java mysql spring spring-mvc openshift

148
推荐指数
7
解决办法
21万
查看次数

标签 统计

java ×1

mysql ×1

openshift ×1

spring ×1

spring-mvc ×1