Loopback4: переключение между средами разработки и производства

#node.js #typescript #loopbackjs

#node.js #машинописный текст #loopbackjs #typescript

Вопрос:

Просто, как я должен реализовать переключение между dev и prod в приложении lp4.

Я добавил свой источник данных, и все работает нормально, но это файл .json. Как я могу переключиться на другую конфигурацию, сохраненную в файле .env, которая может быть прочитана через пакет dotenv.

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

Ответ №1:

Привет от команды LoopBack 👋

LoopBack не поддерживает dotenv из коробки.

Если вы хотите сохранить конфигурацию, зависящую от вашей среды, в файлах, то вам следует поместить вашу производственную конфигурацию в server/datasources.production.json , а затем установить переменную среды NODE_ENV в production . LoopBack — это чтение server/datasources.${NODE_ENV}.json при запуске и применение любых переопределений из этого файла поверх конфигурации по умолчанию, указанной в server/datasources.json .

Сказав это, мы считаем, что лучше использовать https://12factor .подключитесь и обеспечьте производственную конфигурацию с помощью переменных среды. Я полагаю, это то, чего вы тоже пытаетесь достичь?

Может быть, вы ищете способ, как настроить источники данных из переменных среды? LoopBack поддерживает замену переменных в определенных файлах конфигурации, datasources.json является одним из поддерживаемых. Например:

 {
  "db": {
    "connector": "mysql",

    "database": "${MYSQL_DB}",
    "username": "${MYSQL_USER},
    "password": "${MYSQL_PASSWORD}"
}
  

Когда дело доходит до источников данных, в частности, мы рекомендуем немного другой подход:

  • Параметры подключения, используемые локальной разработкой, указаны в server/datasources.json файле с использованием параметров конфигурации источника данных, таких как host , database , username и т.д.
  • При запуске в рабочей среде (промежуточный этап и т.д.) Параметры подключения должны быть настроены с помощью одной строки подключения / URL. Файл источника данных должен содержать запись для присвоения url свойству значения, предоставленного средой.
  • Под капотом LoopBack и все соединители обеспечивают определенное поведение для поддержки этой функции: url свойство переопределяет все другие настройки, но молчаливо игнорируется, когда оно отсутствует.

Пример конфигурации источника данных:

 {
  "db": {
    "connector": "mysql",

    "database": "demo",
    "username": "demo",
    "password": "L00pBack"

    "url": "${MYSQL_URL}"
}
  

При запуске в рабочей среде вы можете задать строку подключения следующим образом:

 export MYSQL_URL=mysql://prod:strong-password@localhost/realdb
  

Пожалуйста, обратитесь к нашему старому сообщению в блогеhttps://strongloop.com/strongblog/managing-loopback-configurations-the-twelve-factor-way / чтобы узнать больше деталей.

Комментарии:

1. Вопрос касался конфигурации dev / prod для lb4. Этот ответ, похоже, является решением для lb3.