SummerWind

Web, Photography, Space Development

Cloud FoundryにNode.jsアプリをデプロイ

2週間前ぐらいにサインアップしておいたCloud Foundryから、アカウント発行のメールがきていたので、早速Node.jsアプリをデプロイして動かしてみるところまで遊んでみました。

Cloud Foundryはvmcというコマンドから操作するようなので、まずはvmcをgemでインストールします。Mac OS X 10.6でコマンドを実行したら、ホームディレクトリ配下の.gemディレクトリ以下にインストールされたので、適当にパスを通しておきます。

$ gem install vmc
$ export PATH=/Users/moto/.gem/ruby/1.8/bin:$PATH
$ vmc -v
vmc 0.3.10

vmcコマンドが動いたら、接続先をCloud Foundryに変更してログインします。ログイン時に使用するメールアドレスとパスワードは、アカウント発行のメールに記載されているものを利用します。

$ vmc target api.cloudfoundry.com
Succesfully targeted to [http://api.cloudfoundry.com]
$ vmc login
Email: [email protected]
Password: ********
Successfully logged into [http://api.cloudfoundry.com]

ログインが完了したら、適当なディレクトリにNode.jsアプリを用意します。Cloud FoundryでNode.jsアプリを動かす場合は、app.jsという名前でアプリケーション本体を保存しておく必要があるようです。今回は最も単純なHello Worldを出力するWebサーバーアプリを書いてデプロイします。

$ mkdir sample
$ cd sample
$ vim app.js


var http = require('http');

var host = process.env.VCAP_APP_HOST || 'localhost';
var port = process.env.VMC_APP_PORT || 3000;

http.createServer(function (req, res) {
    res.writeHead(200, {'Content-Type': 'text/plain'});
    res.end('Hello World¥n');
}).listen(port, host);

サーバーアプリを書く場合、起動時のホスト名とポート番号は、それぞれ環境変数のVCAP_APP_HOST / VMC_APP_PORTから取得しないと、うまく起動してくれないようなので注意が必要です。さて、アプリができたらCloud Foundryに早速デプロイしてみます。デプロイもvmcコマンドから実行します。今回はデプロイ時にインスタンスも同時に作成します。

$ vmc push
Would you like to deploy from the current directory? [Yn]: y
Application Name: summerwind
Application Deployed URL: 'summerwind.cloudfoundry.com'? y
Detected a Node.js Application, is this correct? [Yn]: y
Memory Reservation [Default:64M] (64M, 128M, 256M, 512M, 1G or 2G)
Creating Application: OK
Would you like to bind any services to 'summerwind'? [yN]: N
Uploading Application:
  Checking for available resources: OK
  Packing application: OK
  Uploading (0K): OK
Push Status: OK
Staging Application: OK
Starting Application: OK

デプロイ先にアクセスすれば、実際にアプリが動いているのがわかります。こんな感じでとても簡単にNode.jsアプリをデプロイできたので、今後もうまく活用していきたいと思いました。

Moto Ishizawa

Moto Ishizawa
ソフトウェアエンジニア。ロケットの打上げを見学するために、たびたびフロリダや種子島にでかけるなど、宇宙開発分野のファンでもある。