无法在Azure Web应用程序上部署Flask应用程序

我一直试图在azure Web应用程序上部署一个简单的python应用程序。 我阅读的所有教程都建议,flask应用程序只能与linux Web应用程序一起部署。

当我尝试使用azure linux Web应用程序进行操作并设置部署方法时,不支持python构建。 显示的唯一构建选项是node,php ruby​​和asp.net

我没有找到任何有关如何在Windows Web应用程序上完成操作的教程。

我的build.yml文件如下:

variables:
  ConnectedServiceName: 'azure_first_connection'
  WebAppName: 'STABACKEDNTRAIN'
trigger:
- master

pool:
  name: Hosted Ubuntu 1604

steps:
- task: UsePythonVersion@0
  inputs:
    versionSpec: '3.6'
    architecture: 'x64'

- script: python -m pip install --upgrade pip setuptools wheel
  displayName: 'Install tools'

- script: pip install -r requirements.txt
  displayName: 'Install requirements'

- task: ArchiveFiles@2
  inputs:
    rootFolderOrFile: '$(Build.SourcesDirectory)'
    archiveType: 'zip'
    archiveFile: '$(Build.ArtifactStagingDirectory)/Application$(Build.BuildId).zip'
    replaceExistingArchive: true
    verbose: # Optional

- task: AzureRMWebAppDeployment@4
  displayName: Azure App Service Deploy
  inputs:
    appType: webAppLinux
    RuntimeStack: 'PYTHON|3.6'
    ConnectedServiceName: $(ConnectedServiceName)
    WebAppName: $(WebAppName)
    Package: '$(Build.ArtifactStagingDirectory)/Application$(Build.BuildId).zip'


    StartupCommand: 'gunicorn --bind=0.0.0.0 application'

我的application.py代码是

from app import app
if __name__ == "__main__":
    app.run()

我对天青的Web应用程序完全陌生。你能帮我吗?

hanzhengli 回答:无法在Azure Web应用程序上部署Flask应用程序

Microsoft网站上提供了一些有关如何在Azure Web App上部署Python应用程序的教程。

Here是指南,向您展示如何从azure门户部署到azure Web应用。

Here是一个指南,向您展示如何从Azure Pipelines将python应用程序部署到Azure App Service

Here是有关如何从VScode部署python应用程序的教程

添加: StartupCommand应该在正确的启动.py文件中指向正确的Flask应用程序对象。请检查here以获得有关启动命令的更多信息。

如果您的Flask应用程序的主要模块是application.py,并且该文件中的Flask应用程序对象名为app。该命令应如下所示。

StartupCommand: 'gunicorn --bind=0.0.0.0 application:app'

更新:

要使部署的工件中包含的源文件夹无效,您还需要将includeRootFolder专门设置为false。否则您的项目将被部署到 wwwroot wwwroot/s/

下的 s 文件夹中
 - task: ArchiveFiles@2
  inputs:
    rootFolderOrFile: '$(Build.SourcesDirectory)'
    archiveType: 'zip'
    archiveFile: '$(Build.ArtifactStagingDirectory)/Application$(Build.BuildId).zip'
    replaceExistingArchive: true
    includeRootFolder: false 

希望以上内容对您有所帮助。

本文链接:https://www.f2er.com/3146331.html

大家都在问