背景
サーバーアプリケーションでパスワード等の秘密情報を使う際に、ソースコード上に書いて公開リポジトリで管理すると秘密情報が暴露します。
代わりに、環境変数に秘密情報を設定し、サーバーアプリケーション内で環境変数を読みとる方法があります。
この方法では、開発環境で起動する際に環境変数で設定するのが面倒です。
例
例えばsyamoと言うアプリケーションは、次のコマンドで起動します。
env CHATWORK_TOKEN=XXX GITLAB_URL=YYY GITLAB_TOKEN=ZZZ npm start
これを毎回実行するのは面倒です。
node-foremanを使う
node-foremanを使うと.env
ファイルから環境変数を読み取って、コマンドを実行できます。
インストール
npm install --save-dev foreman
開発環境で使う(ことをpackage.json
に保存する)ため--save-dev
をつけます。
.envファイルの作成
iniファイルのような形式で書きます。
CHATWORK_TOKEN=XXX
GITLAB_URL=YYY
GITLAB_TOKEN=ZZZ
リポジトリに追加しないために.gitignore
に追加します。
echo ".env" >> .gitignore
実行
node-foremanはrunコマンドで、任意のコマンドを実行できます。
node_modules/foreman/nf.js run npm start
npm script
package.json
に起動スクリプトを追加します。
"scripts": {
"start": "babel-node app.js",
"test": "mocha --require espower-babel/guess -c",
"watch": "nodemon --exec babel-node -- app.js",
"dev": "nf run "babel-node app.js"
}
npm run dev
で実行できます。