node nginx pm2 expressのアプリケーションの基盤を作りたくて色々試しているのですが、クラスターモードでダウンタイム0でリロードが出来るということで試してみました。
補足
ホットデプロイに見えるだけでホットデプロイではない感じ、なんというのかわかりません。
2coreでやってるけどreloadをかけると同時にリロードしてしまって
アクセスすると一時的に404になってしまってうまくいかない。
色々巡ってたどり着いたのがGraceful shutdown NodeJS HTTP server when using PM2
以下を追加して試したところうまくいきました。
bin/www
process.on('SIGINT', function() {
// リクエストの受け入れを停止してからプロセスを止める reload時に404にさせない
server.close(() => {
// close connections, clear cache, etc
process.exit();
});
// Force close server after 10sec
setTimeout((error) => {
// close connections, clear cache, etc
process.exit(1);
}, 10000)
});
reloadすると順番にreloadされました。
ファイルを配置してからreloadすることで404になるタイミングが無く、目的の動作が出来ました。