dotCloud で独自のWebサーバーを使いたい場合は type: *-worker が便利

個人的に今 dotCloud がアツいです。無料枠を無制限に使える、WebSocketに対応している、設定の自由度がメチャ高いので、ちょっと作ったものを他人に見せたり自分の携帯から見たりするために気軽に作れちゃいます。

さて、 dotCloud で golang を使うとか、 Tornado を使うとか言った話題になると、出てくるサンプルはたいてい type: custom で設定されています。

type: custom の柔軟性は確かに魅力なのですが、もし使っている言語に type: *-worker が存在しているなら、そちらを使ったほうが PaaS の旨味を引き出せます。

試しに Tornado のチャットデモを dotCloud で動かして見ました。 tornado-on-dotcloud

type: custom の場合は virtualenv を作るところから自前でやらないといけなかったのですが、 type: python-worker を使うと勝手に confg: python_version: v3.2 で指定した Python バージョンで virtualenv を作って、そこに requirements.txt をインストールしてくれるので、 dotcloud.ymlrequirements.txt だけでセットアップが完了しています。

dotcloud.yml:

www:
    type: python-worker
    config:
        python_version: v3.2
    ports:
        www: http
    approot: chat
    process: ./chatdemo.py --port=$PORT_WWW

requirements.txt:

tornado

chat/ ディレクトリ配下は、 Torando に同梱されているサンプルアプリで、 Python 3.2 を使うために xrange を range に書き換えただけで、 dotCloud に対応するための修正は一切していません。

このブログに乗せているコードは引用を除き CC0 1.0 で提供します。