Docker化Flask应用部署Azure App Service启动超时求助
问题诊断与解决方案
从你提供的容器日志里能直接揪出核心矛盾:
2020-01-18T20:21:10.834294374Z * Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)
2020-01-18 20:35:32.525 ERROR - 容器xyz未响应端口80的HTTP探测,站点启动失败。请查看容器日志调试。
Azure App Service启动容器时已经给你设置了PORT=80的环境变量,但你的Flask应用还在默认的5000端口运行,导致平台的健康探测连不上80端口,最终判定启动失败。
修复步骤
1. 修改Flask代码,监听PORT环境变量
把启动代码改成优先读取环境变量里的端口,而不是硬编码5000:
import os from flask import Flask app = Flask(__name__) # 你的路由和业务逻辑... if __name__ == "__main__": # 优先取Azure设置的PORT变量,本地测试默认用5000 port = int(os.environ.get("PORT", 5000)) app.run(host="0.0.0.0", port=port)
2. 调整Dockerfile(可选但更规范)
如果你的Dockerfile里有EXPOSE指令,保持和默认端口一致即可(Azure会通过环境变量覆盖,不用硬写80):
# 基础镜像、依赖安装等步骤... EXPOSE 5000 CMD ["python", "main.py"]
3. 重新构建并推送镜像
用新的版本标签构建推送,避免和旧镜像混淆:
docker build -t gdeol4/azure-ml:version-9 . docker push gdeol4/azure-ml:version-9
4. 更新Azure App Service配置
在Azure门户里把App Service的镜像标签改成新的version-9,或者手动触发一次重新部署,确保平台拉取到最新镜像。
本地验证小技巧
可以先在本地模拟Azure的环境测试:
PORT=80 python main.py
然后访问http://localhost:80确认应用正常运行,提前排查问题。
内容的提问来源于stack exchange,提问作者Gurkamal Deol
相关产品推荐
相关产品推荐

