You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ARM模板中Azure Web应用的App配置变量未生效问题咨询

Azure Flask容器Web App端口配置问题解决

不需要把配置放到其他资源对象里,问题出在配置层级、Flask自身设置或容器配置上,按以下步骤修正:

  • 确认ARM模板配置层级
    确保WEBSITES_PORT和PORT正确嵌套在Microsoft.Web/sites的siteConfig.appSettings数组中,正确的模板片段示例:

    {
      "type": "Microsoft.Web/sites",
      "apiVersion": "2022-09-01",
      "name": "[parameters('siteName')]",
      "location": "[parameters('location')]",
      "properties": {
        "serverFarmId": "[resourceId('Microsoft.Web/serverfarms', parameters('hostingPlanName'))]",
        "siteConfig": {
          "appSettings": [
            {
              "name": "WEBSITES_PORT",
              "value": "80"
            },
            {
              "name": "PORT",
              "value": "80"
            }
          ],
          "linuxFxVersion": "[parameters('linuxFxVersion')]"
        }
      }
    }
    

    如果你用的是Linux容器,必须正确配置linuxFxVersion(格式如DOCKER|你的镜像:标签),这是配置生效的前提。

  • 修正Flask启动代码
    Flask默认监听127.0.0.1:5000,容器环境下要改为监听0.0.0.0,并读取环境变量指定的端口,示例代码:

    import os
    from flask import Flask
    
    app = Flask(__name__)
    
    @app.route('/')
    def hello():
        return "Hello World!"
    
    if __name__ == '__main__':
        app.run(host='0.0.0.0', port=int(os.getenv('PORT', 5000)))
    

    这样应用会优先使用你配置的PORT环境变量值。

  • 检查Dockerfile配置
    确认Dockerfile中包含EXPOSE 80指令,告知Azure容器内部暴露的端口,否则平台可能自动使用备用端口(比如8081)。

  • 验证部署后的配置
    重新部署模板后,在Azure门户的Web App「配置→应用设置」中确认WEBSITES_PORT和PORT已设置为80,再通过日志流或az webapp log tail命令查看应用实际监听端口。

内容的提问来源于stack exchange,提问作者Álvaro

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 16:44:55