dotCloud + node + MongoDB

久々に使ったら設定ファイルの書き方ど忘れ&細々とした部分が変わっていたのでメモ。
自分用なので雑です。

アプリケーションの構成は以下の通り。

application
    - server
        - server.js
    - public
        - css とか js とか
    - views
        - ejs とか

1. dotcloud.yml を書く

server:
    type: nodejs
    approot: server
db:
    type: mongodb

タブが入ってると怒られるので、空白に置換した。

2. server/package.json を書く

{
	"name": "myapp",
	"version": "0.1.0",
	"dependencies": {
		"moduleName": "version"
	}
}

バージョンは "*.*.*" の形式じゃないと怒られる。

3. server/supervisord.conf を書く

[program:node]
command = node server.js
directory = /home/dotcloud/current

4. push する

$ pwd
/path/to/application
$ dotcloud create app
$ dotcloud push app .

5. MongoDB のコンフィグを入手する

$ dotcloud info app.db
config:
    ...
    mongodb_password: password
    ...
...
ports:
    ...
    url: mongodb://root:password@host:port
...

6. MongoDB にユーザを作る

$ dotcloud run app.db mongo
# mongo
MongoDB shell version: 2.0.2
connecting to: test
> use admin
switched to db admin
> db.auth('root', 'password');
1
> use myappdata
> db.getSisterDB('admin').auth('root', 'password');
1
> db.addUser('myappdatauser', 'my_password');
1

7. サーバのスクリプトを書き換える

var mongo = require('mongodb');

var server = new mongo.Server('host', port, {}),
    db = new mongo.Db('myappdata', server);
	
db.open(function() { db.authenticate('myappdatauser', 'my_password', function() { }); });

おわり。

おまけ

ログを見る

$ dotcloud logs app.server

ssh

$ dotcloud ssh app.server

このサービスを制限付きとはいえ、タダで提供してくれるのは非常にありがたいですね。