提问者:小点点

托管Node.js应用程序的。env文件的替代方案


我试图找到一种方法,从Node.js应用程序的开发,舞台和生产环境中删除.env文件。

我现在的解决办法似乎有点人为的。 在构建过程中,在管道中,env变量从Jenkins(配置文件提供程序)重写到附加到应用程序的新的.env文件中。 中部署的应用程序由pm2运行。

我想知道运行${envlist}pm2 start app是不是更好的方法?


共1个答案

匿名用户

这只是我用来处理部署的一个选项。 在我的项目中,我总是有一个文件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