実行可能なスプリングブートジャーがあります。いくつかの環境変数は、SPRING_PROFILES_ACTIVEを含む実行時アカウントの.bashrcによって提供されます。これは、実行時にいくつかのシステムパラメータをチェックすることによって設定されます。Springブートカスタム埋め込みlaunch.scriptの中にSPRING_PROFILES_ACTIVEを設定する
本当に移植可能なアプリケーションを有効にするために、これらの変数をどこかにデプロイされるカスタム.bashrcに依存するのではなく、Springブート実行可能ファイル起動スクリプト(launch.script)のカスタムバージョン内に設定したいと考えています。
つまり、起動スクリプトは現在bashrcにあるカスタムシェルコードを実行します。
カスタム.bashrcをデプロイすることなく、私たちの箱の1つにSpring Boot実行可能なjarをスローすることができました。
デフォルトのSpringブートlaunch.scriptをコピーし、環境変数の先頭に追加しました。 spring-boot-maven-pluginを使用して、デフォルトスクリプトをカスタムスクリプトに置き換えます。 echo文を使用すると、新しいlaunch.scriptがデフォルトのものに置き換わることがわかります。
動的に設定する1つの環境変数はSPRING_PROFILES_ACTIVEです。エコーステートメントを通して、変数が私たちのカスタムlaunch.scriptの中で正しく設定されていることを知っています。ただし、その値はアプリケーションに伝播されていません。つまり、アプリケーション起動時のバネプロファイルは、L0、L1、または設定しようとしているものとは異なり、常に「デフォルト」です。
私はexportを使用して変数をエクスポートし、-xを宣言しました。
実行していることはすべて実行可能か、launch.scriptのSPRING_PROFILES_ACTIVEを設定するのが遅すぎますか?
の同じディレクトリに
my.script
を作成して、あなたは 'JAVA_OPTS'に渡す試してみましたし、 '-Dspring.profiles.active = myProfile'を使用していますか? –現在、いくつかのホスト固有のファイルを処理して、アクティブなプロファイルを決定しています。現在は.bashrcでこれを行います。したがって、コマンドラインでspring.profiles.activeを設定する必要はありません。しかし、私たちの目標は、ファイル処理シェルコードを独自のlaunch.scriptに埋め込み、.bashrcファイルに組み込むことです。 – JRB