2016-02-21 12 views
48

スプリングブートウェブアプリケーションで作業中です。使用しているデータベースはMySqlです。Springブートのapplication.propertiesでenv変数を使用する

  • 私たちが持っている設定がある私たちは、まずそれがローカルは(我々はPC上でMySQLを備え付ける必要があることを意味)テスト。

  • 次に、Bitbucket;

  • ジェンキンスは自動的のBitbucketに新しいプッシュを検出し、その上にビルドを(ジェンキンスMVNのビルドに合格するためには、我々はまた、ジェンキンスを実行している仮想マシン上でMySQLをインストールする必要があります)ん。

  • もしJenkinsがビルドをパスすれば、我々はOpenShiftのアプリケーションにコードをプッシュします(JenkinsのOpenshiftデプロイメントプラグインを使用しています)。

あなたはすでにそれを考え出したかもしれないとして、我々はを持っている問題があることです。我々はハードのMySQL情報をコーディングすることはできませんapplication.properties

  • 。私たちのプロジェクトは3つの異なる場所(ローカルジェンキンス、およびOpenShift)で実行されますので、我々は(我々は別の方法のことをやってのがある知っているが、我々は、この上で作業しているapplication.propertiesでのデータソースのフィールドを動的にする必要があります今のところ解決策)。

    spring.datasource.url = 
    spring.datasource.username = 
    spring.datasource.password = 
    

我々が思いついた解決策がある、我々は(同様のOpenShift名、それらをそれらを命名)と丁重彼らに正しい値を割り当てるローカルおよびジェンキンスVMでシステム環境変数を作成

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" 

これを実行して動作します。また、環境変数のようなJavaの変数にすることができることをMap<String, String> env = System.getenv();で確認している:

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"); 

今残された唯一の事はある私達は私達のapplication.propertiesでこれらのJava変数を使用する必要があり、それは私たちが問題を抱えているものですと。

たフォルダとはどのように我々はそれらを見ることができるようにapplication.propertiesためpassworduserNamesqlURL、およびsqlPort変数を割り当てる必要があり、我々は彼らがapplication.propertiesにどのように含まれますか?これまで

spring.datasource.url = ${sqlURL}:${sqlPort}/"nameofDB" 
spring.datasource.username = ${userName} 
spring.datasource.password = ${password} 

ありません運:

私たちは多くのものであること、それらのいずれかを試してみました。おそらく、適切なクラス/フォルダにenv変数を入れて、applicatin.propertiesで正しく使用しているとは限りません。

あなたのご協力をよろしくお願い申し上げます。

ありがとうございます!

+1

読む[@ConfigurationProperties](https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html)の詳細を学ぶために。しかし、これは[プロファイルの特定の構成プロパティ]のための完全なユースケースです(https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html#boot-機能・外部設定プロファイル固有の-プロパティ) –

答えて

関連する問題