heroku localでnodejsアプリを起動した時にファイルの変更やエラーによる停止を検知して再起動するように設定
開発しているnodejsアプリケーションの本番環境はherokuにデプロイしているのですが、ローカル環境ではheroku localコマンドを利用してローカルマシンにアプリケーションを立ち上げています。
heroku localによるアプリケーションの立ち上げ時に、ファイルの変更やエラーによるアプリケーション停止を検知して、アプリケーションが自動で再起動されるようにする方法を調べたのですが、まとまったページがなかったのでメモもかねて記載しておこうと思います。
以下のように設定すれば、heroku localによる起動でも、ファイルの変更やアプリケーションエラーによる停止時にアプリケーションは再起動されるようになります。
0. foreverをインストール
npm install forever -g
1. アプリケーションのルートディレクトリにあるProcfileに以下の行を追加
development: forever -w -m 500 -c "node --inspect=5858" app.js
- -wオプションは、ファイルの変更を検知して再起動がかかるようにするために必要
- -mオプションは、何度再起動をかけるようにするか設定(ここではとりあえずエラーによって停止しても500回は再起動されるようにしている)
- -cオプリョンは、heroku local developmentコマンドの実行時に、内部で実行するコマンドを指定。アプリケーションのデバッグ用に5858ポートを立ち上げるように--inspectオプションを指定している
2. .foreverignoreファイルをアプリケーションのルートディレクトリに配置
(.foreverignore) ===================================== **/.idea/** **/.git/** **/.tmp/** **/views/** **/assets/** # Restart only when js files are changed. !*.js =====================================
- .foreverignoreは、gitignoreの書式とは異なる書き方をするので注意。.foreverignoreによって、どのファイルの変更時にはアプリケーションの再起動が必要なのか設定することができます。
foreverignore syntax/documentation · Issue #417 · foreverjs/forever · GitHub
3. アプリケーションを起動
heroku local development
以上の手順を踏めば、heroku localによる起動でも、ファイルの変更やエラーによるアプリケーション停止時にnodejsのアプリケーションは再起動されるようになります。