8
Spring Bootのapplication.propertiesでenv変数を使用する
私たちはSpring Boot Webアプリに取り組んでおり、使用しているデータベースはMySqlです。 私たちの設定は、最初にローカルでテストすることです(つまり、PCにMySqlをインストールする必要があります)。 次に、Bitbucketにプッシュします。 JenkinsはBitbucketへの新しいプッシュを自動的に検出し、それに基づいてビルドを実行します(Jenkins mvn buildをパスするには、Jenkinsを実行している仮想マシンにMySqlをインストールする必要もあります)。 Jenkinsビルドが成功した場合、OpenShiftのアプリケーションにコードをプッシュします(JenkinsのOpenshiftデプロイメントプラグインを使用)。 あなたがすでにそれを理解しているかもしれないので、私たちが抱えている問題は次のとおりです: でapplication.properties我々のハードコードMySQLの情報はできません。プロジェクトは3つの異なる場所(local、Jenkins、およびOpenShift)で実行されるため、データソースフィールドを動的にする必要がありますapplication.properties(これにはさまざまな方法があることはわかっていますが、今のところこのソリューションに取り組んでいます)。 spring.datasource.url = spring.datasource.username = spring.datasource.password = 私たちが思いついた解決策は、ローカルおよび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" 私たちはこれを実行し、それは機能します。また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"); 今残っているのは、これらのJava変数を使用する必要があることだけですapplication.properties。それが問題です。 どのフォルダには、どのように、私たちが割り当てる必要がありませんpassword、userName、sqlURL、およびsqlPortのための変数application.propertiesにそれらを見て、どのように我々はそれらを含めないことができるようにするのapplication.properties? …