2017-04-19 22 views
0

プロパティファイルを使用する必要があるスプリングブートアプリケーションがあります。このアプリケーションはクラウド上にあります。したがって、プロパティファイルもまたクーデターになります。クラウド上で外部プロパティファイルを持つSpringブートアプリケーション

私はクラウドファウンドリを使用してクラウドと通信し、「cf push」を使用してスプリングブートアプリケーションをプッシュします。

私の質問: 1.プロパティファイルを保存する場所と方法は?クラウドに格納することはできますか?どうやって?または、gitに格納してアプリケーションで参照する必要がありますか? 2.外部の場所にあるこのプロパティファイルの使用方法は?

答えて

2

クラウドファウンドリではファイルシステムにアクセスできません。設定ファイルをクラスパスに保存し、クラスパスからプロパティをロードする必要があります。これはSpringブートのデフォルトの動作です。 Springブートのapplication.propertiesファイル(src/main/resourceの中にあります)がjarファイルの中に入り、springsが読み込みます。したがって、組み込みのjar/warをビルドすると、クラスパスの中に入り、直接動作します。

プロパティを処理するクラウドファウンドリの方法は、VCAP変数によるものです。 cf push中に使用されるdeplyomentマニフェストを使用して、これらのプロパティを外部化することができます。 マニフェストのymlファイル内に、以下のようにプロパティを定義します。

env: 
    myprop1: myvalue1 
    myprop2: myvalue2 

この方法を使用すると、アプリのすべてのプロパティを通常のシステムプロパティとして利用できます。 Javaコード内では、アプリケーション内でSystem.getProperties()としてアクセスできます。

これらの2つのアプローチの主な欠点は、アプリケーションをクラウドファウンドリに再構築/再プッシュする必要があることです。アプリケーションが起動して実行されると、アプリケーションは動的にプロパティの変更を読み取ることができません。

このSpring-Cloudを克服するには、プロジェクトcloud-configが必要です。これは、GITまたはFile System/Vaultなどの他のいくつかのタイプのデータソースによってサポートされます。これは、異なる設定サービスとして実行されます。 Configサービスからアプリケーションの読み取りプロパティを作成するアプリケーションプロパティファイル内に、configサーバーを定義できます。

https://cloud.spring.io/spring-cloud-config/spring-cloud-config.html 

ほとんどの場合、マイクロサービスアーキテクチャのプロパティを集中管理する必要がある場合は、構成サービスのアプローチに行くことができます。

+0

1.なぜクラウドファウンドリはファイルシステムアクセスを提供しませんか? – Tiya

+0

2. Springブートアプリケーションをクラウドに一度だけデプロイしたい。しかし、春のブートアプリケーションをクラウドに再デプロイする必要なく、後でプロパティファイルの内容を変更できるようにしたい。これはapplication.propertiesを使って実現できますか? spring-bootアプリケーションをデプロイした後でも、アプリケーションの.propertiesをリロードできますか? – Tiya

+1

クラウドファウンドリは、仮想環境で動作します。アプリケーションの各インスタンスは、独立した独立したコンテナで実行されます。したがって、ファイルシステムは一時的なものです。このリンクを読んで、クラウドファウンドリの仕組みを理解してください。 https://docs.cloudfoundry.org/devguide/deploy-apps/prepare-to-deploy.html#filesystemアプリケーションのプロパティをリロードすることはできません。いくつかのプロパティを変更したら、再構築し、アプリケーションをクラウドファウンドリにプッシュする必要があります。あなたのユースケースには、春のクラウド設定サーバーの使用を検討する必要があります。 –

0

適切に指摘されているように、Spring-Cloud Configサービスを使用するのに最適です。サービスには、Git Repo(URL、ユーザー名、およびパスワードが大半)にヒットする資格があり、プロパティを取得できます。

通常、展開ファイル(プロファイルを含むマニフェストファイル)を定義します。したがって、Dspring.profiles.active = Testというテスト環境では、アプリケーションはこれを使用してロードします。

もう一つの側面は、CloudConfigServiceで複数のプロファイルを定義することです。 spring.cloud.config.label = youLabelを使用して、これらの間で切り替えることができます。 ConfigServiceを使用すると、プロファイル選択を使用して設定間を簡単に切り替えることができるため、ヘルプが表示されます

関連する問題