Procfileを扱う

Procfileというのを使ったのでメモを残す。

Procfileという名前のファイルを作って、アプリケーションの起動コマンドをまとめておくと、Procfileを扱うツールから簡単に実行できる。

Procfile:

web: gunicorn -w 4 main:app 0.0.0.0:$PORT
test: py.test .

起動(honchoの場合):

$ honcho start web
22:55:01 system | web.1 started (pid=53633)
22:55:02 web.1  | [2016-11-21 22:55:02 +0900] [53635] [INFO] Starting gunicorn 19.6.0
22:55:02 web.1  | [2016-11-21 22:55:02 +0900] [53635] [INFO] Listening at: http://0.0.0.0:5000 (53635)
22:55:02 web.1  | [2016-11-21 22:55:02 +0900] [53635] [INFO] Using worker: sync
22:55:02 web.1  | [2016-11-21 22:55:02 +0900] [53638] [INFO] Booting worker with pid: 53638
22:55:02 web.1  | [2016-11-21 22:55:02 +0900] [53639] [INFO] Booting worker with pid: 53639
22:55:02 web.1  | [2016-11-21 22:55:02 +0900] [53640] [INFO] Booting worker with pid: 53640

環境変数を.envファイルに記述し、Procfile内で使うことができる。こうすると、起動コマンドはProcfileで共有し、利用する各環境では.envに設定を記載するといったこともやりやすい。

Procfileを扱うモジュールはRubyだとForeman、PythonだとHoncho、GoだとGoremanといった感じで色々あるようだ。

HerokuではProcfileを記述してプロセスを起動できるようだ。