LoginSignup
1
2

More than 5 years have passed since last update.

node-configを使って環境変数を読み込む方法

Posted at

dockerでNode.jsのアプリを動かす際、同じイメージを使いたいけど開発環境や本番環境などで連携システムのIDやURLが異なったりする、またはイメージを作成した後にこれらの値を変更したいことがありますよね。
解決策の一つとして、node-configのcustom environment variablesを使う方法があります。

custom environment variablesとは

node-configといえば、一般的な使い方はNODE_ENV=developmentなどを指定して、config/development.jsonなどを呼び出して使うことではないでしょうか。

custom environment variablesは、config/custom-environment-variables.jsonに左辺に変数値、右辺に環境変数名と指定しておけば、実行時に環境変数が存在する場合はそちらを優先的に読み込むものとなっています。

custom-environment-variables.jsonの例

{
    "url" : "URL",
    "account" : {
         "name" : "ACCOUNT_NAME",
         "pass" : "ACCOUNT_PASS",
         "code" : "ACCOUNT_CODE "
    }
}

custom-environment-variablesで指定した変数が別のconfigのjsonで同じように定義されていたとしても、環境変数に指定してあればこちらが優先されます。

default.jsonが以下とする

{
    "url" : "https://example.com",
    "account" : {
         "name" : "TARO",
         "pass" : "PASSWORD"
    }
}

run.js

var config = require('config')
console.log(config.account.name)

実行結果

PS > node .\run.js
TARO
PS > $env:ACCOUNT_NAME="JIRO"
PS > node .\run.js
JIRO
PS >

default.jsonで指定していたTAROが当初表示されますが、環境変数でACCOUNT_NAMEにJIROと設定したところ、その値が実行結果に反映されました。

これを使ってDockerfileなどに環境変数を指定すれば、イメージの再作成を行うことなく環境ごとに異なる値を後から自由に修正することが可能になります。

参考
https://github.com/lorenwest/node-config/wiki/Environment-Variables#custom-environment-variables

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2