Установка переменных среды на локальном компьютере в производстве - PullRequest
0 голосов
/ 15 октября 2019

Когда вы запускаете приложение Express в производственном режиме на локальном компьютере, как вам следует обращаться с настройкой переменных среды?

Я использую пакет config. В разработке я использую этот файл конфигурации - development.json:

{
    "mongoURI": "myMongoConnectionStringWithUsernameAndPassword",
    "apiKey": "mySuperSecretSuperSecret"
}

В производственном режиме, насколько я понимаю, нельзя хранить такие конфиденциальные данные в файле. Насколько я понимаю, причина в том, что если такой файл был проверен в системе контроля версий, каждый мог бы получить доступ к конфиденциальной информации, содержащейся в нем (если есть другие причины, пожалуйста, уточните). Следовательно, в производственном процессе мой конфигурационный файл выглядит следующим образом: production.json:

{
    "mongoURI": "",
    "apiKey": ""
}

Кроме того, я использую файл custom-environment-variables.json для сопоставления переменных среды и значений конфигурации. Затем эти переменные среды удобно установить на рабочем сервере, например, с помощью панели инструментов Heroku, которая позволяет использовать их в приложении Express.

{
    "mongoURI": "db_uri"
    "apiKey": "api_key"
}

Однако на моем локальном компьютере я не знаюудобного способа легко установить и обновить эти переменные среды.

Я думал об их настройке с помощью сценария запуска, который запускает мое приложение в рабочем состоянии в package.json, но затем я снова поместил бы их в файл, что было бы той же проблемой, что и их сохранение в production.json как объяснено выше.

Как это делается на практике? Должен ли я вручную устанавливать все переменные окружения на терминале на моем локальном компьютере каждый раз, когда я хочу запустить свое приложение в рабочей среде? Есть ли лучший способ?

Обновление: есть предложение gitignore файла производственной конфигурации. Но тогда как другие члены команды запускают приложение на своих машинах, если у них нет файла конфигурации? Это то, что я не получаю по этому поводу, похоже, что никто не должен хранить эти значения конфигурации в файле или на GitHub, но они должны быть разделены между разработчиками для запуска приложения? Как команды делают это на практике?

Ответы [ 4 ]

1 голос
/ 15 октября 2019

Этот вопрос кажется специфичным для пакета config.

В этом контексте считалось, что шифрование секретов хорошая идея:

https://github.com/lorenwest/node-config/wiki/Securing-Production-Config-Files

Если вы не использовали config, то использование переменных среды - это очень распространенный шаблон для хранения конфиденциальных данных:

https://nodejs.dev/how-to-read-environment-variables-from-nodejs


Оставьте немного пищи для сомнений: запуск производства на вашей локальной машине? Это не похоже на то, что вы хотели бы сделать вообще. Возможно, вы внесете изменения в хранилище производственных данных.

1 голос
/ 15 октября 2019

Вы можете использовать dotenv для этого!

0 голосов
/ 15 октября 2019

Hope convict npm package решает вашу проблему, указанную здесь. Так как он позволяет устанавливать значения по умолчанию для свойств конфигурации в файле, он может быть переопределен переменными среды в более высокой среде. Валидация может быть применена к конфигурации во избежание человеческих ошибок.

Кроме того, установка свойства как чувствительного типа делает конфиденциальное значение не распечатанным в файлах терминала или журнала.

0 голосов
/ 15 октября 2019

Node.js предлагает вам настроить переменные среды через CLI,

Свойство process.env возвращает объект, содержащий пользовательскую среду

, так что вы можете установитьваш конфиг перед командой запуска, например, «mongoURI = xxxx npm start», и это самый простой способ,

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