TORIPIYO DIARY

recent events, IoT, programming, security topics

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のアプリケーションは再起動されるようになります。