Cloud Foundryを触ってみる。(デプロイ他)
環境変数を表示するための簡単なアプリケーションを作成し、デプロイしてみます。
Cloud Foundryではアプリケーションのホストやポート番号、インスタンス情報
その他諸々の環境変数はJSON形式でENVに格納されているようです。
今回は数行のアプリケーションを作成・デプロイしてENVの中身を覗いてみたいと思います。
require 'sinatra' require 'pp' get '/' do "<pre>#{ENV.pretty_inspect}</pre>" end
アプリケーションをデプロイするには「vmc push」。
上で作成したRubyスクリプトの置いてある場所で実行してみましょう。
対話形式でアプリケーションをデプロイできます。
$ vmc push Would you like to deploy from the current directory? [Yn]: Y Application Name: アプリケーション名 Application Deployed URL: 'アプリケーション名.cloudfoundry.com'? Detected a Sinatra Application, is this correct? [Yn]: Y Memory Reservation [Default:128M] (64M, 128M, 256M, 512M, 1G or 2G) 64M Creating Application: OK Would you like to bind any services to 'アプリケーション名'? [yN]: N Uploading Application: Checking for available resources: OK Packing application: OK Uploading (1K): OK Push Status: OK Staging Application: OK Starting Application: OK
SinatraアプリかRailsアプリかといった事を自動的に判別してくれるみたいで賢いですね。
注意としては、Application Name で任意にアプリケーション名を入力しますが、
URLのドメイン名にも適用されるのでアンダースコアを含めない方がよいようです。
「Would you like to bind any services to …」はMySQL/Redis/MongoDBのサービスを
アプリケーションにバインドするかどうかの質問事項です。
今回はDBを利用しないのでN。
これでアプリケーションがデプロイされ、http://アプリケーション名.cloudfoundry.com で
アクセスできる状態となりました。
試してみてください。
なお、上記以外のpush方法は次のとおり。
Application Creation push [appname] Create, push, map, and start a new application push [appname] --path Push application from specified path push [appname] --url Set the url for the application push [appname] --instances <N> Set the expected number <N> of instances push [appname] --mem M Set the memory reservation for the application push [appname] --no-start Do not auto-start the application
アプリケーションの停止は「vmc stop アプリ名」、削除は「vmc delete アプリ名」で行います。
その他にもログなどのアプリケーション情報も参照できますが、それらの
コマンドは「vmc -h」で確認してください。
アプリケーションでMySQL/Redis/MongoDBの永続化の仕組みを利用するにはサービスを作成し、
アプリケーションへバインドします。
バインドされたサービス情報(サービス自体の情報やCredential(ホスト/ユーザー名/パスワードなど))
はENVの中のVCAP_SERVICESという変数に格納される仕組みのようです。
ですのでDBへの接続情報はENVをJSONとしてパースしVCAP_SERVICESのcredentialsから取得
する形となるものと思います。