【问题标题】:How to reference Azure Configuration Application setting from a node application using javascript如何使用 javascript 从节点应用程序引用 Azure 配置应用程序设置
【发布时间】:2021-08-06 14:32:35
【问题描述】:

我在 Azure 上部署了一个 node.js 应用程序作为“myClient”应用服务,以及几个包含特定于其运行时环境的值的配置文件:

  • appconfig.json 用于在 localhost 上进行调试(不适用于 Azure)。
  • appconfig.production.json 用于在应用服务生产槽“myClient”中运行。
  • appconfig.development.json 用于在应用服务开发槽“myClient/development”中运行。

myClient 应用包含一个“environment.prod.ts”文件:

export const environment = {
    production: true,
    hmr: false,
    appConfig: 'appconfig.development.json'
};

应用程序是从 DOS shell 使用“npm run publish”发布的。 我可以将包上传到“myClient/development”插槽,它运行良好,没有任何问题。

当我想为“myClient”生产槽创建一个包时,我对“environment.prod.ts”文件进行以下更改并再次发布。

appConfig: 'appconfig.production.json'

已发布的包已上传到 Azure 生产槽,运行良好,没有任何问题。

这是这种方法的问题:

  • 必须修改源代码以指定环境。
  • 发布需要 25-30 分钟。
  • 无法在 Azure 中使用交换槽功能。

如果我可以访问应用程序设置(类似于 ASPNETCORE_ENVIRONMENT),我可以根据该插槽的环境选择正确的配置文件(在代码中),然后使用 Swap 从开发部署到生产。

我已经搜索了互联网(包括这个网站),看看是否有办法从节点应用程序访问应用服务应用程序设置,但没有找到任何描述如何完成此操作的文章。

是否可以使用 javascript 从节点应用程序引用 Azure 配置应用程序设置?

是否有替代过程来修改每个环境的源代码和发布?

【问题讨论】:

    标签: javascript node.js azure environment-variables


    【解决方案1】:

    应用服务注入了一个WEBSITE_SLOT_NAME app setting,其值为当前运行槽的名称。您可以利用它来决定使用哪个配置。

    您也可以只使用 slot-specific 的自定义应用设置(固定在插槽上)并根据需要对每个插槽的值进行硬编码。

    【讨论】:

    • "只是利用它来决定使用哪个配置。"这就是问题所在!如何“利用”应用程序设置?我不想在任何文件中硬编码特定于插槽的值。我想避免每个插槽 30 分钟的发布周期 - 只需为所有插槽发布一次。
    猜你喜欢
    • 2023-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-27
    • 2020-08-01
    • 2020-08-13
    • 2016-06-20
    • 1970-01-01
    相关资源
    最近更新 更多