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といった感じで色々あるようだ。
- GitHub - ddollar/foreman: Manage Procfile-based applications
- GitHub - nickstenning/honcho: Honcho: a python clone of Foreman. For managing Procfile-based applications.
- GitHub - mattn/goreman: foreman clone written in go language
HerokuではProcfileを記述してプロセスを起動できるようだ。