Dockerでio.jsの開発環境を作ってみる
いつものようにDocker Hubを眺めていたら
io.jsの公式Imageがあったのでこれはやるしかない!ということでやっていきます。
https://registry.hub.docker.com/_/iojs/
環境
Mac OS 10.10.1 Docker 1.4.1
figのインストール
figはDockerのコンテナをいい感じにしてくれるツールで
設定ファイルを元に短いコマンドでコンテナを起動してくれたりします。
$ sudo pip install -U fig
package.jsonの作成
scriptsにstartとdependenciesにkoaを追加しています。
Dockerのイメージを作成する際にないとエラーになるので先に作っておきます。
{ "name": "docker-iojs-project-example", "version": "0.0.0", "description": "", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1", "start": "node app.js" }, "author": "", "license": "MIT", "dependencies": { "koa": "^0.16.0" } }
Dockerfileの作成
Dockerfileを作成します。
onbuildは短くかけるし便利なのでドンドン使いたいです。
EXPOSEでポートを開けておきましょう
FROM iojs:onbuild ENV PORT 3000 EXPOSE 3000
fig.ymlの作成
ここでどのようにコンテナを作成するか書きます。
volumesの項目ではカレントディレクトリをコンテナにマウントします。
これで毎回Docker buildせずに起動すればコードが反映されます。
web: build: . volumes: - .:/usr/src/app ports: - "3000:3000"
fig.ymlを作成したら以下のコマンドでbuildしましょう
$ fig build
koaのHello World
koaはES6のGeneratorsを使って作られたWeb Frameworkです。
Middlewareが書きやすくなります!(今度詳しく調べます)
app.jsという名前で以下のファイルを作成します
var koa = require('koa'); var app = koa(); app.use(function *(next){ var start = new Date; yield next; var ms = new Date - start; console.log('%s %s - %s', this.method, this.url, ms); }); app.use(function *(){ this.body = "Hello World"; }); app.listen(process.env.PORT || 3000);
そしたら以下のコマンドでコンテナを作成して起動しましょう
$ fig up
http://docker-host:3000/
にアクセスしてHello Worldが確認できると思います。
まとめ
今年はNode.jsとio.jsはいったいどうなるのか注目です。
Node.jsのFrameworkの定番もexpress.jsからkoaになるかもしれないのでそろそろ調べていこうかと思いました。
それと今度のNode学園ではio.jsについてトークがあるので 申し込みを忘れないようにしておきたいです。