Cloudfoundry
Spring Cloud
は、12-factor appのパターンスルーである。
構成の場合は、config pattern suggested by 12-factor appパターンも使用します。
このパターンによれば、環境内のコード外のプロパティをenvironment variables
として格納する必要があります。そのため、アプリケーションバンドルは、変更を加えずにビルドされると、どの環境にも展開できます。環境変数から設定を取得するので、異なる環境では異なる環境変数を定義する必要があります。
cf bind-service
を使用してアプリケーションにサービスを追加するたびに、Cloudfoundryはそのサービスに関連する事前定義された環境変数を仮想マシン(またはコンテナなど)に設定します。あなたはcf env app-name
を使用して、これらの環境変数を確認することができます
。(Command Refeference)cf env app-name
{
"VCAP_APPLICATION": {
"application_id": "fa05c1a9-0fc1-4fbd-bae1-139850dec7a3",
"application_name": "my-app",
"application_uris": [
"my-app.10.244.0.34.xip.io"
],
"application_version": "fb8fbcc6-8d58-479e-bcc7-3b4ce5a7f0ca",
"limits": {
"disk": 1024,
"fds": 16384,
"mem": 256
},
"name": "my-app",
"space_id": "06450c72-4669-4dc6-8096-45f9777db68a",
"space_name": "my-space",
"uris": [
"my-app.10.244.0.34.xip.io"
],
"users": null,
"version": "fb8fbcc6-8d58-479e-bcc7-3b4ce5a7f0ca"
}
の
サンプル出力をspring actuator endpointsを使用して、あなたは/env
エンドポイントを使用して、すべての環境変数を検査することができます。それはcf env
より多くのプロパティをリストします。メモリデータソース依存性
ばね
cloud profile
がアクティブであることを検出する(spring cloud
にspring.profiles.active
環境プロパティ、またはspring.profile
プロパティによって設定される)
Auto Configuration
- (@SpringBootApplicationによってイネーブル)が有効になっているNOでありますクラスパス上に存在する(ただし、メモリ依存関係が存在していても、クラウドデータソース設定の優先順位を与えると仮定している)
- ませデータソースを明示的に
春は(Postgresのような)データソースサービスがアプリケーションにバインドされている場合は、環境変数を使用してデータソース豆自体を作成するように構成されていません。
以下は、データソースの作成に使用する環境プロパティのリンクです。ここで
https://docs.cloudfoundry.org/buildpacks/java/spring-service-bindings.html
データソースのみプロパティのリストです。唯一のデータベース・サービスがアプリケーションに追加があるかどう
cloud.services.<database-service-name>.connection.hostname
cloud.services.<database-service-name>.connection.name
cloud.services.<database-service-name>.connection.password
cloud.services.<database-service-name>.connection.port
cloud.services.<database-service-name>.connection.username
cloud.services.<database-service-name>.plan
cloud.services.<database-service-name>.type
database-service-name
が私の経験ではenv: block
にManifest.yml
ファイルで定義されている、環境変数のセクションでデータベース・サービス名を定義する必要はありませんでした。
注:デフォルトスプリングによって
は、我々私たちの自己だけでApacheのDBCPのような接続プールプロバイダーによってサポートされているいくつかのプロパティを設定する必要があり、時間のが、ほとんど、サーブレットコンテナのプール可能な接続のサポートを使用しようとするだろう。このような場合、環境プロパティ(System.getProperty()またはSpring Environment.getProperty()を使用)を使用してデータソースBeanを手動で作成する必要があります。
私は、フードの下では同じJDBC手順がまだ行われていると仮定しますが、Springはそれらを抽象化してあなたのために取り除いていると仮定します。 –
私は同じと思います。私の質問は、このJDBC接続がデータベースのユーザー名とパスワードをどのように知っているかの線に沿っています。私はそれがインスタンスがPCFのアプリケーションに「束縛されている」という事実と関係していると推測していますが、PCFには新しく、この仕組みがわかりません。 –