[NodeJS] PM2でNODE_ENVなどの環境変数を、環境ごとに指定する
こんにちは、@yoheiMuneです。
先日PM2入門の記事を書きましたが、今日はその続きで、PM2で本番やDEVなど環境ごとに、環境変数を指定する方法をブログに書きたいと思います。
PM2では起動時に、環境変数を指定してNode.jsのインスタンスを立ち上げることが可能です。
具体的にはまず、起動用の設定ファイルに、以下のような記述(
アプリ側で、例えば以下のような出力をしている場合には、
https://github.com/yoheiMune/node-playground/tree/master/010-pm2
PM2 - Environment management(公式、英語)
最後になりますが本ブログでは、Node.js・Linux・インフラ・開発環境・Python・フロントエンド・Go言語・Swift・Java・機械学習など雑多に情報発信をしていきます。自分の第2の脳にすべく、情報をブログに貯めています。気になった方は、本ブログのRSSやTwitterをフォローして頂けると幸いです ^ ^。
最後までご覧頂きましてありがとうございました!
先日PM2入門の記事を書きましたが、今日はその続きで、PM2で本番やDEVなど環境ごとに、環境変数を指定する方法をブログに書きたいと思います。
目次
PM2で環境ごとに環境変数を設定する
本格的にNode.jsのアプリを開発していると、環境ごとに環境変数の値を変更したいことが多いです。有名なものだとNODE_ENV
のような変数だったり、ファイルの保存先ディレクトリだったり、APIのエンドポイントだったり、と様々です。PM2では起動時に、環境変数を指定してNode.jsのインスタンスを立ち上げることが可能です。
具体的にはまず、起動用の設定ファイルに、以下のような記述(
env
やenv_production
)を追加します。// pm2config.json { "name": "myapp", "script": "app.js", "env": { "NODE_ENV": "local", "SECRET_KEY": "my-local-secret" }, "env_production": { "NODE_ENV": "production", "SECRET_KEY": "my-production-secret" } }そして、以下のようにコマンドで利用することで、環境変数をインスタンスに渡します。
# envを指定しない場合には、設定ファイル内のenvが利用されます。 $ pm2 start pm2config.json # envを指定すると、該当の環境(env_xxxの「xxx」の部分)の環境変数が適用されます。 $ pm2 start pm2config.json --env productionと、こんな感じで、簡単に環境変数を使い分けることができます。上記は
env_production
ですが、env_local
やenv_develop
など、複数の環境ごとに指定することも可能です。便利♪アプリ側で、例えば以下のような出力をしている場合には、
// 環境変数のテスト(PM2の設定ファイルより指定) console.log('NODE_NEV:', process.env.NODE_ENV); console.log('SECRET_KEY:', process.env.SECRET_KEY);
pm2 logs
より、その出力を確認することができます。$ pm2 logs 3|myapp | NODE_NEV: production <==== ここ 3|myapp | SECRET_KEY: my-production-secret <==== ここ 3|myapp | Express app starts, linstening port on 3000.
今回のサンプルコード
今回のサンプルコードは、下記におきましたので、適宜ご参照いただけたら幸いです。https://github.com/yoheiMune/node-playground/tree/master/010-pm2
参考資料
下記ドキュメントを参照しました。ありがとうございます。PM2 - Environment management(公式、英語)
最後に
pm2には色々な機能が備わっていて助かります。本番で利用するための設定を他にもいくつか行なっているので、その辺も今後ブログにアウトプットできたらなと思います。最後になりますが本ブログでは、Node.js・Linux・インフラ・開発環境・Python・フロントエンド・Go言語・Swift・Java・機械学習など雑多に情報発信をしていきます。自分の第2の脳にすべく、情報をブログに貯めています。気になった方は、本ブログのRSSやTwitterをフォローして頂けると幸いです ^ ^。
最後までご覧頂きましてありがとうございました!