在 Azure 应用服务环境中自动创建 WEBSITE_RUN_FROM_PACKAGE 环境变量

问题描述 投票:0回答:1

我有一个包含 Web 应用程序和 Web 作业项目的解决方案,我使用 Azure DevOps 管道构建和部署该项目,然后使用 ZipDeploy 选项将其部署到 Azure Windows 应用服务。我可以使用发布管道将 Web 应用程序部署到我的开发和测试环境,没有任何问题。当我使用相同的发布管道部署到我的 PROD 环境时,

WEBSITE_RUN_FROM_PACKAGE=1
环境变量神秘地显示为环境变量。此设置不在我的 appsettings.json 文件中,甚至不在我的用户机密文件中。我比较了发布管道的 3 个阶段,没有发现任何差异(除了环境订阅和应用服务名称)。

我有第二个类似的解决方案,包含一个 Web 应用程序和 2 个 Web 作业项目,可以在所有 3 个环境中正确部署。我比较了这两个 DevOps 项目的构建和发布管道,没有发现任何差异。

我可以使用Kudu查看App Service文件系统中的appsettings.json文件,其中没有WEBSITE_RUN_FROM_PACKAGE条目。 Kudu 还在“环境”页面 ->“环境变量”部分中显示

WEBSITE_RUN_FROM_PACKAGE=1
APPSETTING_WEBSITE_RUN_FROM_PACKAGE=1
。另外,我发誓我从应用程序服务门户中手动删除了
WEBSITE_RUN_FROM_PACKAGE=1
环境变量,只是让它在一段时间后重新出现,这根本没有意义。

这个环境变量来自哪里?

附录: 出于沮丧,我再次使用应用程序服务门户从 PROD 环境变量中手动删除了

WEBSITE_RUN_FROM_PACKAGE=1
。 Web 应用程序重新启动后,它抛出了之前构建的错误! 使用我的 Azure Release Pipeline 手动 re 将最新版本的 Web 应用程序部署到 PROD 环境/阶段后,Web 应用程序再次开始工作,并且
WEBSITE_RUN_FROM_PACKAGE=1
再次神奇地出现在环境变量中(叹气) .

azure-devops azure-pipelines azure-web-app-service azure-appservice
1个回答
0
投票

当您使用 ZipDeploy 部署应用程序时,Azure 应用服务会自动设置 WEBSITE_RUN_FROM_PACKAGE=1 环境变量。此配置指示 Azure 应用服务直接从部署期间上传的 .zip 文件包运行您的应用程序。

您观察到的行为是预期的并且发生的原因是:

  1. ZipDeploy 本质上使用 WEBSITE_RUN_FROM_PACKAGE=1 来启用从包运行应用程序。
  2. 手动删除 WEBSITE_RUN_FROM_PACKAGE=1 可能会导致错误,因为应用服务依赖此配置来查找和执行已部署的包。

以下内容可以解释为什么您仅在 PROD 中遇到此行为:

  1. 不同的部署设置:

ZipDeploy 方法在您的 PROD 管道中显式使用或配置,即使是无意的。 比较管道中的部署任务(例如,部署 YAML 或 GUI 设置)。如果管道使用部署 Azure 应用服务任务,请检查部署方法是否设置为 ZipDeploy。

  1. 应用程序服务插槽行为:

对于 PROD,您可能拥有自动启用 WEBSITE_RUN_FROM_PACKAGE 的部署槽(例如,登台 -> 生产)。

  1. 应用程序配置重置:

在部署期间,应用服务可能会重新应用 ZipDeploy 所需的设置(例如 WEBSITE_RUN_FROM_PACKAGE),从而覆盖手动更改。

如果您不想使用 WEBSITE_RUN_FROM_PACKAGE,请切换到不依赖它的部署方法,例如 Run-From-Folder。

  1. 修改部署管道以使用 RunFromFolder 方法:

取消设置管道中的 WEBSITE_RUN_FROM_PACKAGE 环境变量。 配置部署任务以在应用服务上提取 .zip 文件。

  1. 更新发布管道任务:

    • 任务:AzureRmWebAppDeployment@4 输入: 包:'$(Pipeline.Workspace)/drop/yourpackage.zip' 部署方法:'runFromFolder'
© www.soinside.com 2019 - 2024. All rights reserved.