我试图找到一种方法,从Node.js应用程序的开发,舞台和生产环境中删除.env
文件。
我现在的解决办法似乎有点人为的。 在构建过程中,在管道中,env变量从Jenkins(配置文件提供程序)重写到附加到应用程序的新的.env
文件中。 中部署的应用程序由pm2
运行。
我想知道运行${envlist}pm2 start app
是不是更好的方法?
这只是我用来处理部署的一个选项。 在我的项目中,我总是有一个文件ecosystem.config.js。
module.exports = {
apps: [{
name: "my little project",
script: "./app.js",
instances: "max",
env: {
NODE_ENV: "production",
},
env_development: {
NODE_ENV: "development",
},
env_production: {
NODE_ENV: "production",
}
}]
}
在我的入口点中有(app.js):
if (process.env.NODE_APP_INSTANCE === '0' || process.env.NODE_ENV !== 'production') {
// start cronJobs here or any action needs to be done in single proccess
}
if (process.env.NODE_ENV === 'production') server.listen(800 + process.env.NODE_APP_INSTANCE);
else if (process.env.NODE_ENV === 'test') server.listen(700 + process.env.NODE_APP_INSTANCE);
else
server.listen(3045, err => {
console.log(err ? err : `REST server started on 3045.`);
});
在你的jenkins档案里:
stage('Deploy') {
environment {
NODE_ENV = "production"
}
steps {
sh 'pm2 start ecosystem.config.js'
}
}
您可以使用任何您想要的环境来运行您的应用程序:
pm2 start ecosystem.config.js --env production