Documentation

You are viewing the documentation for the 2.1.5 release in the 2.1.x series of releases. The latest stable release series is 2.4.x.

§CloudFoundry / AppFog にデプロイする

§CloudFoundry vs. AppFog

AppFog へのデプロイは、下記の Cloud Foundry のインストラクションで vmc の代わりに af を実行する事で実現できます。また AppFog では デプロイ用 zip ファイルに jar を追加するステップ に従う必要があります。

§必要条件

無料の Cloud Foundry アカウントにサインアップし、下記のコマンドで Cloud Foundry コマンドラインツールおよび VMC の最新版 (0.3.18 以上) をインストールもしくはアップグレードします。

gem install vmc

§アプリケーションをビルドする

Play プロンプトで dist コマンドを打つ事でアプリケーションをパッケージングします。

§アプリケーションをデプロイする

作成した zip ファイルを VMC push コマンドで Cloud Foundry にデプロイします。もしデータベースサービスを作成すると選択した場合、 Cloud Foundry はアプリケーションの起動時に自動的にデータベースのエボリューションを適用します。

yourapp$ vmc push --path=dist/yourapp-1.0.zip
Application Name: yourapp
Detected a Play Framework Application, is this correct? [Yn]:
Application Deployed URL [yourapp.cloudfoundry.com]:
Memory reservation (128M, 256M, 512M, 1G, 2G) [256M]:
How many instances? [1]:
Create services to bind to 'yourapp'? [yN]: y
1: mongodb
2: mysql
3: postgresql
4: rabbitmq
5: redis
What kind of service?: 3
Specify the name of the service [postgresql-38199]: your-db
Create another? [yN]:
Would you like to save this configuration? [yN]: y
Manifest written to manifest.yml.
Creating Application: OK
Creating Service [your-db]: OK
Binding Service [your-db]: OK
Uploading Application:
  Checking for available resources: OK
  Processing resources: OK
  Packing application: OK
  Uploading (186K): OK
Push Status: OK
Staging Application 'yourapp': OK
Starting Application 'yourapp': OK

§サービスとのやり取りをする

§Auto-Reconfiguration

Cloud Foundry は auto-reconfiguration というメカニズムを使用して Play アプリケーションをリレーショナルデータベースサービスに自動接続します。もし Play の設定に単一のデータベース設定 (例えば default) が見つかり、単一のデータベースサービスインスタンスがアプリケーションに紐付けられている場合、 Cloud Foundry は設定されている接続プロパティを自動的にオーバーライドして、アプリケーションに紐付けられた PostgreSQL および MySQL のサービスを指定するようにします。

この方法はシンプルなアプリケーションを素早く立ち上げて動作させるすばらしい方法です。しかし、アプリケーションには使用しているデータベースに特有の SQL が含まれている事がよくあります。このような場合や、アプリケーションが複数のサービスと紐付けたい場合には、 auto-reconfiguration を回避して明示的にサービス接続プロパティを指定することができます。

§Cloud Foundry サービスに接続する

通常通り、 Cloud Foundry はアプリケーションに接続された全てのサービス接続の情報を VCAP_SERVICES 環境変数を通して JSON フォーマットで提供します。しかし接続情報は Play の設定で利用可能なプロパティとして取得する事も出来ます。ここでは tasks-db という PostgreSQL のサービスに接続する application.conf ファイルの例を示します。

db.default.driver=${?cloud.services.tasks-db.connection.driver}
db.default.url=${?cloud.services.tasks-db.connection.url}
db.default.password=${?cloud.services.tasks-db.connection.password}
db.default.user=${?cloud.services.tasks-db.connection.username}

この情報は NoSQL やメッセージングサービスを含む全てのタイプのサービスに適用可能です。また、一つのサービス (postgresql 等) しか無い場合、名前を指定する代わりに以下のようにそのサービスを指定することができます。

db.default.driver=${?cloud.services.postgresql.connection.driver}
db.default.url=${?cloud.services.postgresql.connection.url}
db.default.password=${?cloud.services.postgresql.connection.password}
db.default.user=${?cloud.services.postgresql.connection.username}

これらのプロパティを (cloud.conf 等の) 別ファイルにし、 Cloud Foundry へのディストリビューションをビルドする時のみに含める事が推奨されます。 play dist-Dconfig.file を使う事で別のファイルを指定する事が出来ます。

§Auto-reconfiguration を無効にする

上記のプロパティを使用した場合、 auto-reconfiguration が無効になります。明示的に無効にするには “cloudfoundry.properties” ファイルをアプリケーションの conf ディレクトリに作成し、それから autoconfig=false を追加します。