Альтернатива для файла .env для размещенного приложения Node.js - PullRequest
0 голосов
/ 12 июля 2020

Я пытаюсь найти способ избавиться от .env файла из сред разработки, сцены и продукта для Node.js приложения.

Текущее решение, которое у меня есть, кажется немного надуманным. В процессе сборки в конвейере переменные env перезаписываются из Jenkins (поставщика файлов конфигурации) в новый файл .env, который прикрепляется к приложению. Развернутое приложение запускается pm2.

Интересно, лучше ли запускать ${envlist} pm2 start app?

1 Ответ

1 голос
/ 12 июля 2020

это просто вариант, который я использую для развертывания. В моих проектах у меня всегда есть файл 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...