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

如何让Azure App Service中Docker部署的Python Web服务可外部访问?

Azure App Service 部署Python容器Web服务无法外部访问问题

问题背景

尝试在Azure App Service中运行Python Web服务器:已通过Dockerfile构建容器并推送到Azure Docker Registry,持续部署配置正常生效;已设置SSH,可通过Azure Portal连接到容器内部。

但外部请求容器内Web服务器的index.html均失败,容器内通过curl localhost:8080可正常访问,本地运行容器时外部也能正常访问,推测是端口未正确转发导致。

已验证正常的操作

  • 构建包含Python Web应用的Docker容器
  • 将容器推送到Azure Docker Registry
  • Azure App Service的持续部署流程正常
  • 通过Azure Portal的SSH功能连接容器成功
  • 容器内Web服务器已启动并正常运行
  • 容器内通过curl命令可访问Web服务器的index.html
  • 本地启动容器后,可通过浏览器正常访问index.html

异常情况

  • 无法从互联网外部访问Web服务器提供的index.html

已尝试的排查操作

  • 修改容器内端口(8080/80/8008/8000/443),同步调整Web服务器监听端口、Dockerfile的EXPOSE端口、Azure App Service的WEBSITES_PORT配置
  • 单独启动Web服务器(不启动sshd服务)
  • 启用/禁用HTTPS
  • 修改Azure App Service的"HTTPS Only"、"Always on"、"HTTP 2.0 Proxy"、"HTTP version"设置
  • 添加应用设置PORT=8080、WEBSITES_PORT=8080
  • 重启、重建、重新部署Azure App Service实例
  • 查看Azure Portal中的日志流与部署中心日志

观察到的关键信息

容器启动失败,日志内容如下:

ERROR - Container <name> for site <name> did not start within expected time limit. Elapsed time = 230.2830234 sec
ERROR - Container <name> didnt respond to HTTP pings on port: 8080, failing site start. See container logs for debugging.
INFO - Stopping site <name> because it failed during startup.

容器内所有服务实际均正常运行;Azure启动容器的命令如下:

docker run -d --expose=8080 --name <name> -e WEBSITES_ENABLE_APP_SERVICE_STORAGE=false
-e WEBSITES_PORT=8080 -e WEBSITE_SITE_NAME=<app-service-name> -e WEBSITE_AUTH_ENABLED=False
-e WEBSITE_ROLE_INSTANCE_ID=0 -e WEBSITE_HOSTNAME=<hostname> -e WEBSITE_INSTANCE_ID=<id>
-e WEBSITE_USE_DIAGNOSTIC_SERVER=False <DockerRegistry:Tag>

本地执行该启动命令同样无法访问index.html,添加-p 8080:8080端口映射参数后则恢复正常。

相关文件为我使用的代码仓库内容。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 09:25:34