pm2의 ecosystem 기능을 이용해 보자. 모듈의 재호출 필요없이 편하게 config를 사용하기 위하여 global module안에 추가하자.
// app.js
global.config = require('config');
// ex) mongodb 세팅
const db = global.config.mongoDbUrl; // "mongodb://koolog:<password>@ds3.mlab.c/koolog"
const env = global.config.app.env; // "dev"
pm2 restart ecosystem.config.js --env production
// ex) ecosystem.config.js
module.exports = {
apps: [
{
name: 'web',
script: 'app.js',
exec_mode: 'cluster',
instances: 'max',
instance_var: 'INSTANCE_ID',
env: {
NODE_ENV: 'development',
NODE_CONFIG_DIR: './config/',
},
env_staging: {
NODE_ENV: 'staging',
NODE_CONFIG_DIR: './config/',
},
env_production: {
NODE_ENV: 'production',
NODE_CONFIG_DIR: './config/',
},
},
],
};
// ex) config/development.js
{
"app": {
"env": "dev",
"name": "myapp",
"version": "v1"
},
"mongoDbUrl": "mongodb://koolog:<password>@ds3.mlab.c/koolog"
}
env 옵션에 맞게 config 디렉토리안에 development.js
, staging.js
, production.js
와같이 파일을 만들어 두면 app을 실행할때 환경에 맞는 config로 실행가능하다.