我有一个包含 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
再次神奇地出现在环境变量中(叹气) .
当您使用 ZipDeploy 部署应用程序时,Azure 应用服务会自动设置 WEBSITE_RUN_FROM_PACKAGE=1 环境变量。此配置指示 Azure 应用服务直接从部署期间上传的 .zip 文件包运行您的应用程序。
您观察到的行为是预期的并且发生的原因是:
以下内容可以解释为什么您仅在 PROD 中遇到此行为:
ZipDeploy 方法在您的 PROD 管道中显式使用或配置,即使是无意的。 比较管道中的部署任务(例如,部署 YAML 或 GUI 设置)。如果管道使用部署 Azure 应用服务任务,请检查部署方法是否设置为 ZipDeploy。
对于 PROD,您可能拥有自动启用 WEBSITE_RUN_FROM_PACKAGE 的部署槽(例如,登台 -> 生产)。
在部署期间,应用服务可能会重新应用 ZipDeploy 所需的设置(例如 WEBSITE_RUN_FROM_PACKAGE),从而覆盖手动更改。
如果您不想使用 WEBSITE_RUN_FROM_PACKAGE,请切换到不依赖它的部署方法,例如 Run-From-Folder。
取消设置管道中的 WEBSITE_RUN_FROM_PACKAGE 环境变量。 配置部署任务以在应用服务上提取 .zip 文件。
更新发布管道任务: