это просто вариант, который я использую для развертывания. В моих проектах у меня всегда есть файл system.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'
}
}
вы можете запускать приложение с любым env, которое хотите:
pm2 start ecosystem.config.js --env production