Node Foremanで複数のプロセスを同時に起動する

Rubyで開発している時に開発環境で複数のプロセスをまとめて起動させたいときにforemanを 利用することが多いですがNode.jsの実装でNode Foremanがあります。

www.npmjs.com

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の範囲でカバーできるので便利ですね。