Когда вы запускаете приложение 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, но они должны быть разделены между разработчиками для запуска приложения? Как команды делают это на практике?