Loopback4:在开发和生产环境之间切换

时间:2019-03-20 16:52:54

标签: node.js typescript loopbackjs

简单来说,我应该如何在lp4应用上实现在开发和生产之间切换。

我添加了数据源,并且一切正常,但这是一个.json文件。如何切换到保存在.env文件中的其他配置,可以通过dotenv程序包读取该配置。

我尝试手动创建数据源对象,但是遇到错误,因此很可能我的方法是错误的。任何建议将不胜感激。

1 个答案:

答案 0 :(得分:2)

LoopBack小组的您好

LoopBack不支持现成的dotenv。

如果要将特定于环境的配置保留在文件中,则应将生产配置放置到server/datasources.production.json,然后将环境变量NODE_ENV设置为production。 LoopBack正在启动时读取server/datasources.${NODE_ENV}.json,并在server/datasources.json中指定的默认配置之上应用该文件的所有替代。

话虽如此,我们认为最好使用https://12factor.net并通过环境变量提供生产配置。我想这也是您想要实现的目标?

也许您正在寻找一种方法来从环境变量配置数据源? LoopBack在某些配置文件中支持变量替换,其中datasources.json受支持。例如:

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

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

特别是在数据源方面,我们建议使用一种略有不同的方法:

  • 使用server/datasources.jsonhostdatabase等数据源配置选项在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/,以了解更多详细信息。