2017-05-03 3 views
0

"App1"と呼ばれるCloud FoundryにSpring Bootアプリケーションをデプロイし、別のSpringブートアプリケーションからこのアプリケーションのURIを取得する必要がある場合同じ場所でCloud Foundryにも展開されている「app2」。これは「APP2」にコードVCAPサービスからアプリケーション名を使用してアプリケーションURIを動的に取得することは可能ですか

$以下のようなものを与えることによって可能である{vcap.application.app1.urisを[0]} //あなたがそれを行うことはできませんAPP2

答えて

1

のapplication.ymlでこれを使用した場合。アプリケーションは独自のコンテナ内で実行されるため、環境変数は同じスペースにあってもアプリケーション間で共有されません。

app1が使用しているルートがわかっている場合は、app2のapplication_uris [0]を使用して置き換えて使用できます。

+0

クール!だから、アプリケーションのプロパティは、アプリケーションバインドのコンセプトがないのでバインドした後、アプリケーション間でサービスプロパティを共有する方法など、他のアプリケーション間で共有することはできません。正しい? –

+0

まさに...サービスバインディングはCFによってサポートされているため、バインドされたサービスのプロパティはenv変数として作成されます。アプリのバインディングコンセプトはないので、アプリ全体でenv変数を共有することはできません。あなたが春の雲を使用しているなら、あなたはnetflix ossからサービス発見のためにユーレカサービスを使うことを検討するかもしれません。 –

+0

あなたのサービスのURLのように、アプリケーション間でデータを簡単にやり取りする必要がある場合は、ユーザが提供するサービスをバインドするか、 'cf set-env'を使用します。サービスディスカバリを検討し始めたいのは、変更を動的に検出して適応させる必要がある場合です。ユーザー提供のservice/env変数を使ってURLを渡すと、service/env変数を更新し、その変数を使用しているアプリケーションを再起動するだけでURLを更新することができます。サービス発見は動的であり、消費するサービスを再開する必要なく適応します。 –

0

これはややアンチパターンですが、クラウドコントローラと通信するための資格情報を使ってアプリケーションをデプロイすることはお勧めしません。これのためのサービス検索フレームワークのいくつかの並べ替えを使用すると、はるかに適していますまたはNetflix's "Eureka"

関連する問題