我在使用 GitHub Actions 配置将 Python (FastAPI) 应用程序自动部署到 Azure Web App 时遇到问题。部署成功,但 Azure 自动触发 Oryx 构建和 OneDeploy 进程,这是我想避免的。
是否有人遇到过类似问题或找到绕过 Oryx 和 OneDeploy 流程的解决方案?任何指导将不胜感激!
我尝试了多种配置来禁用 Azure 上的自动构建,但到目前为止没有任何效果。这是我尝试过的:
在 Azure Web App 配置中设置环境变量 ENABLE_ORYX_BUILD=false 和 WEBSITE_RUN_FROM_PACKAGE=1 以禁用自动构建。然而,OneDeploy 和 Oryx 仍在被触发。 删除了 Azure 配置中的任何启动命令,并设置 GitHub Actions 工作流程来创建预构建应用程序的 ZIP 包,期望 Azure 直接部署它而无需重建。 调整了 GitHub Actions 工作流程以使用发布配置文件而不是客户端 ID 和租户 ID 进行身份验证,旨在实现更简单、直接的部署,但问题仍然存在。
我尝试通过避免 oryx/onedeploy 构建来部署 Fastapi 应用程序,但未能做到这一点。
我尝试设置
DO_NOT_USE_ORYX=true
并使用不同的配置修改了我的工作流程文件以避免 Oryx 构建,但它仍然无法绕过构建过程,因为默认情况下在适用于 Linux 的 Azure 应用服务上启用了 Oryx。
不幸的是,当使用 ZipDeploy 或 GitHub Action 等部署方法时,默认情况下会启用 Oryx。
使用
SCM_DO_BUILD_DURING_DEPLOYMENT=false
等设置禁用或控制 Oryx 对于使用 Oryx 的部署来说并不简单。
即使在部署应用程序时设置
SCM_DO_BUILD_DURING_DEPLOYMENT=false
后,Oryx 仍处于启用状态并构建应用程序,如下面的日志所示。
请参阅此博客以更好地了解Azure App Service(linux)上的python部署。
请参阅此doc了解 oryx 配置。
如果您使用 Visual Studio 代码,它将使用
Remote build
添加 ENABLE_ORYX_BUILD=true
和 SCM_DO_BUILD_DURING_DEPLOYMENT=1
并启用 Oryx 来构建资源。
如果你确实想绕过 Oryx,你可以考虑使用外部构建器,因为它们默认不启用 Oryx。
您可以通过 Azure CLI 使用 Azure Pipelines 或 Zip Deploy 来部署应用程序,以绕过 Oryx 构建。
请参阅此doc了解如何使用Azure管道将Python应用程序部署到Azure Web应用程序。