2017/07/20更新

[NodeJS] PM2でNODE_ENVなどの環境変数を、環境ごとに指定する

このエントリーをはてなブックマークに追加      

こんにちは、@yoheiMuneです。
先日PM2入門の記事を書きましたが、今日はその続きで、PM2で本番やDEVなど環境ごとに、環境変数を指定する方法をブログに書きたいと思います。
画像


目次




PM2で環境ごとに環境変数を設定する

本格的にNode.jsのアプリを開発していると、環境ごとに環境変数の値を変更したいことが多いです。有名なものだとNODE_ENVのような変数だったり、ファイルの保存先ディレクトリだったり、APIのエンドポイントだったり、と様々です。

PM2では起動時に、環境変数を指定してNode.jsのインスタンスを立ち上げることが可能です。

具体的にはまず、起動用の設定ファイルに、以下のような記述(envenv_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_localenv_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の脳にすべく、情報をブログに貯めています。気になった方は、本ブログのRSSTwitterをフォローして頂けると幸いです ^ ^。

最後までご覧頂きましてありがとうございました!





こんな記事もいかがですか?

RSS画像

もしご興味をお持ち頂けましたら、ぜひRSSへの登録をお願い致します。