Загрузить переменную из файла dotenv при запуске PM2 - PullRequest
3 голосов
/ 17 апреля 2019

Я запускаю экземпляры моего приложения в виде package.json сценария с PM2 следующим образом:

"start:pm2": "pm2 start -i max node myapp.js"

Я обнаружил, что не все члены команды всегда хотят использовать max в качестве значениядля числа экземпляров при разработке, но предпочитают использовать более низкое значение.

Чтобы не изменять package.json Я бы лучше позволил им изменить значение в файле .env, потому что мы уже используем его, чтобы значение из негобудет использоваться в качестве параметра для pm2.

Я знаю, что могу создать сценарий оболочки js или bash для загрузки переменной из файла .env и передачи ее в pm2, но было бы лучше иметь решение без него.

Какя могу достичь этого?

Ответы [ 2 ]

2 голосов
/ 17 апреля 2019

Вы можете создать файл ecosystem.config.js и объявить переменные окружения в атрибуте «env:», в вашем случае банку NODE_APP_INSTANCEиспользоваться для установки количества экземпляров:

module.exports = {
  apps : [{
    name: "MyApp",
    script: "./myapp.js",
    env: {
      NODE_ENV: "development",
      NODE_APP_INSTANCE: "max"
    },
    env_production: {
      NODE_ENV: "production",
    }
  }]
}

Затем вызовите pm2 start или pm2 start /path/to/ecosystem.config.js, чтобы загрузить экосистему из другой папки.

0 голосов
/ 25 апреля 2019

Лучшим примером здесь является удаление dotenv из вашего кода и «требование» его в командной строке. Это делает ваш код хорошо переносимым между любыми средами (включая облачные), что является одной из основных характеристик переменных среды.

a) закодируйте ваш файл .env вместе с вашим скриптом (например, app.js)

б) запустить ваш скрипт без pm2:

node -r dotenv/config app.js

в) в pm2.config.js:

module.exports = {
  apps : [{
    name      : 'My Application',
    script    : 'app.js',
    node_args : dotenv/config',
    ...
  }],
}

, а затем pm2 start pm2.config.js

примечание: использование dotenv / config в командной строке является одним из лучших методов, рекомендованных самим dotenv

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...