我們正在開發(fā)一個Spring Boot Web應用程序,正在使用的數(shù)據(jù)庫是MySql;我們擁有的設置是我們首先在本地對其進行測試(意味著我們需要在PC上安裝MySql);然后我們推向Bitbucket ;Jenkins自動檢測到對Bitbucket的新推送并在其上進行構建(要使Jenkins mvn構建通過,我們還需要在運行Jenkins的虛擬機上安裝MySql)。如果Jenkins構建通過,我們會將代碼推送到OpenShift上的應用程序(使用Jenkins上的Openshift部署插件)。我們的問題,因為你可能已經(jīng)想通了就是:在application.properties我們不能對MySql信息進行硬編碼。由于我們的項目將在3個不同的地方(local,Jenkins和OpenShift)運行,因此我們需要使數(shù)據(jù)源字段動態(tài)化application.properties(我們知道這樣做的方式不同,但目前正在研究此解決方案)。spring.datasource.url = spring.datasource.username = spring.datasource.password = 我們想到的解決方案是在本地和Jenkins vm中創(chuàng)建系統(tǒng)環(huán)境變量(以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"我們已經(jīng)做到了,而且行得通。我們還檢查了Map<String, String> env = System.getenv();是否可以將環(huán)境變量設置為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");現(xiàn)在剩下的唯一事情就是我們需要在我們的程序中使用這些java變量application.properties,這就是我們遇到的麻煩。在哪個文件夾,以及我們?nèi)绾?,需要分配password,userName,sqlURL,和sqlPort變量application.properties能夠看到他們,我們?nèi)绾螌⑺鼈儼赼pplication.properties?我們嘗試了許多事情,其中之一是:spring.datasource.url = ${sqlURL}:${sqlPort}/"nameofDB"spring.datasource.username = ${userName}spring.datasource.password = ${password}到目前為止沒有運氣。我們可能沒有將這些env變量放在正確的類/文件夾中,或者在中錯誤地使用了它們application.properties。非常感謝您的幫助??!謝謝!
在Spring Boot的application.properties中使用env變量
慕斯709654
2019-10-15 09:55:37