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

Azure App Service中Docker容器启动后无响应问题求助

问题分析

从日志和配置来看,核心问题有两个:

  1. 端口不匹配导致Azure暖机检测失败:Azure App Service会自动设置HTTP_PORTS环境变量(默认8080),但你的应用最后被强制监听了5000端口,和预期端口不一致,导致Azure的暖机请求无法到达应用,最终超时。
  2. 错误的启动命令:Azure App Service本身是托管容器的平台,不需要手动执行docker run命令,这个指令会干扰平台的容器管理流程。
解决方案

1. 移除错误的启动命令

在Azure App Service的「配置」-「常规设置」中,清空「启动命令」输入框。Azure会自动使用Dockerfile中定义的ENTRYPOINT启动容器,无需额外的docker run指令。

2. 统一端口配置(二选一)

方案A:使用Azure默认的8080端口

修改Dockerfile的base阶段,将端口改为8080,和Azure默认配置对齐:

FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS base
WORKDIR /app

EXPOSE 8080
ENV DOTNET_URLS=http://+:8080

这样应用会监听8080端口,和Azure设置的HTTP_PORTS一致,不会出现端口被覆盖的警告,暖机请求也能正常访问。

方案B:保留自定义8181端口

如果需要继续使用8181端口,需告知Azure要检测的端口:

  • 保持Dockerfile原有的端口配置(EXPOSE 8181、ENV DOTNET_URLS=http://+:8181)
  • 在Azure App Service的「配置」-「应用程序设置」中添加环境变量:
    WEBSITES_PORT = 8181
    
    该变量会告诉Azure去8181端口检查应用健康状态。

3. 修正环境变量加载方式

不要依赖容器内的.env.staging文件,直接将.env.staging中的所有环境变量添加到Azure App Service的「应用程序设置」中:

  • 比如.env.staging里有ASPNETCORE_ENVIRONMENT=Staging,就在应用程序设置里添加这个键值对,确保应用运行在正确环境下,同时避免文件路径问题导致的环境变量加载失败。
验证

重新部署容器后,查看日志应出现类似以下内容,说明应用监听正确端口,暖机请求会成功:

info: Microsoft.Hosting.Lifetime[14]
      Now listening on: http://[::]:8080

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 10:31:21