Node Foremanで複数のプロセスを同時に起動する
Rubyで開発している時に開発環境で複数のプロセスをまとめて起動させたいときにforemanを 利用することが多いですがNode.jsの実装でNode Foremanがあります。
npmコマンドでNode Foremanをインストールします。
$ npm install -g foreman
コマンド自体は nf
となります。
$ nf _____ | __|___ ___ ___ _____ ___ ___ | __| . | _| -_| | | | |__| |___|_| |___|_|_|_|_^_|_|_| Usage: nf [options] [command] Commands: start [options] Start the jobs in the Procfile run [options] Run a one off process using the ENV variables export [options] Export to an upstart job independent of foreman Options: -h, --help output usage information -V, --version output the version number -j, --procfile <FILE> load procfile FILE -e, --env <FILE> use FILE to load environment -p, --port <PORT> start indexing ports at number PORT
では、実際に複数のプロセスをNode foremanで起動してみます。
Procfile自体はRubyのforemanと同じなので準備します。ひとまず開発用ということで Procfile.development
というファイル名で以下の様な内容を準備します。
サンプルとして先日作成したloopbackアプリ + MongoDBを動かしてみます。
web: node . mongo: mongod --dbpath=./db
上記の様なProcfileを用意したらNode Foremanを起動します。
$ nf start -j Procfile.development
上記のコマンドでForemanを起動すると、複数プロセス(loopbackアプリとMongoDB)が起動します。
Node.jsのアプリでforemanを使いたいとき、npmの範囲でカバーできるので便利ですね。