2017-11-15 3 views
0

たとえば、ConfigurableEnvironmentやクラウドファウンドリインスタンスのインデックスを使用して、クラウドファウンドリにデプロイされたスプリングブートアプリケーションのすべてのインスタンスに対して、異なるプロファイルをプログラムで設定できますか?クラウドファウンダーでのバーンブートアプリケーションインスタンスごとに異なるプロファイル

+0

これはどのようなケースですか?アプリケーションのインスタンスが別々に機能することは本当に望ましくありません。 CFにプッシュする各アプリケーションは、1つ以上のインスタンスを持つことができ、それらのインスタンスはまったく同じでなければなりません。異なる動作が必要な場合は、複数のアプリケーションをプッシュする必要があります。 –

+0

インスタンスは、プロファイルが2つ以上のバスタブジョブを実行するための設定をロードするために使用されることを除いて、同じ機能を持ちます。 Eatchジョブは自身のインスタンス上で実行されます。 – Moam

+0

クォーツスケジューラをクラスターモードで使用して、すべてのインスタンスにわたって実行を分散する方法はありますか?どのインスタンスがどのジョブを実行しているかをハードコードすると、インスタンスがダウンしたときに問題が発生します。 – NOTtardy

答えて

0

私はあなたがタスクを使用することを検討することをお勧めします。

https://docs.cloudfoundry.org/devguide/using-tasks.html

ここでは、これがどのように動作するかを大まかにです。

  1. cf pushを実行して、アプリケーションをCFにデプロイします。あなたが実際に実行するアプリケーションを持っていない場合、それはOKです。アプリを押して一度起動するだけで、液滴を段階的に作成して作成する必要があります。その後、cf stopを実行してインスタンスをシャットダウンすることができます(注:少なくとも1回は実行する必要があるため、cf push --no-startは機能しません)。

  2. 実行cf run-task <app> <command>。ここでバッチジョブを開始します。 <command>引数は、バッチジョブを実行する完全なコマンドになります。ここでは、使用すべきプロファイルを示す引数を付けることができます。例:--spring.profiles.active=dev,hsqldb

    https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-profiles.html

    あなたは、Java buildpackがパス上にそれを置くしないのでjava exceutableへの完全パスまたは相対パスを使用する必要があります。 JVMのバージョンを表示するタスクを実行する場合は、このコマンドを使用します'.java-buildpack/open_jdk_jre/bin/java -version'

    例:cf run-task <app> '.java-buildpack/open_jdk_jre/bin/java -version'

    はあなたのコマンドでJava実行可能ファイルへのパスをハードコーディングの欠点のためにかかわらず、このSO postを参照してください。私の提案は、あなたがcf pushを実行し、あなたのニーズに変更するときに記載されているコマンドを実行することです。

関連する問題