まずはプロトタイプ

前回なんとか Docker で実行環境兼開発環境を構築できました。 とにかく早く作ってみたいので、プロトタイプという体で手を動かしてみます。 どうせ作り直したくなってくるので、最初は適当にやってみようというかんじ。死にゲー。

Express の環境構築

1
2
3
$ nvm use v5.9.0
$ npm init
$ npm install --save-dev express

--save-dev オプションを付けておくと、インストールしたパッケージをpackage.jsへ自動で追記してくれます。便利!

アプリを書いてみる

app.js という名前で以下のファイルを作った。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
var express = require('express');
var app = express();

// receive http request
app.get('/', function (req, res) {
  res.send('Hello, World');
});

// launch server
var server = app.listen(3000, function () {
  var host = server.address().address;
  var port = server.address().port;
  console.log('Judge server is started at http://%s:%s', host, port);
});

で、できあがったのがこれ。

実行してみる

1
2
3
$ node app.js
$ curl http://:::3000
Hello, World

おおお、動いてる!

Docker で動かす

これまでは直接 Mac で動かしていましたが、前回作った Docker の実行環境で動かしてみます。

1
2
3
4
5
6
$ git clone git@github.com:tac0x2a/judgesv_devenv.git
$ cd judgesv_devenv/
$ git clone git@github.com:tac0x2a/judgesv_app_prototype.git data/work
$ docker-compose build
$ docker-compose pull
$ docker-compose up -d

data/work が DataVolume になっており、コンテナの /home/devenv/work にマウントされて、node app.js で実行されます。

エントリポイントがapp.js 固定になってて気持ち悪いですが、何か設定ファイル等で指定する方法があるんだと思います。そのうち調べます。

はい、今回はここまで〜