Как лучше всего установить переменные среды при разработке nodejs на локальном компьютере для среды App Engine Flex? Если они установлены в app.yaml, они не устанавливаются во время локальной разработки. Есть ли способ заставить это, или я должен использовать что-то вроде dotenv и отслеживать одни и те же переменные среды в 2 местах?
Переменные среды в App Engine для локальной разработки
Ответы:
Конфиденциальные данные (например, ключи API) не должны передаваться в исходный код.
Я решил, что храню файл .env
в Google Storage. Затем вы можете использовать @google-cloud/storage
для его загрузки в продакшн (используя хук prestart
) и dotenv для загрузки переменные в память.
Полное руководство можно найти здесь: https://gunargessner.com/gcloud-env-vars/< /а>
PS: я бы согласился на ответ Эйдана для хранения любых данных, которые не являются конфиденциальными. Я сам удовлетворительно использовал dotenv
в прошлом. Аналогично этому, есть nconf, пакет, который сам gcloud
использует для примеров. Довольно аккуратно!
Вариант 1:
require('dotenv').config({path: '/custom/project/root/app.yaml'})
Вариант 2:
Поддерживайте как файл .env, так и файл .yaml с одинаковыми ключами, но разными значениями (соответственно, локальным и GAE). В app.yaml я стараюсь не развертывать свой файл .env, добавляя следующую строку:
skip_files : .env
Затем вам нужно будет добавить проверку ('dotenv').config(), чтобы убедиться, что она не выдаст ошибку или не перезапишет ваши переменные процесса, если файл .env не обнаружен.
Предложение Эйдана хорошее.
Поскольку конфигурации должны различаться для GAE и локальной среды, я бы предложил вариант 2 — отдельный .ENV
для локальной среды и .YAML
для среды GAE.
Однако один незначительный момент. Я бы предложил добавить файлы .gcloudignore
, что-то вроде приведенного ниже:
.gcloudignore
.git
.gitignore
.env
staging.yaml
node_modules/
production
в этой строкеconst dsKey = ds.key(['ENV_VAR', 'production'])
используйте переменнуюNODE_ENV
. Итак, эта строка теперь выглядит такconst dsKey = ds.key(['ENV_VAR', process.env.NODE_ENV])
Таким образом, вы можете поместить туда все свои файлы конфигурации, просто имея два ключа (разработка и производство). 22.04.2017