Azure Linux Web App启动失败:容器未响应7007端口HTTP探测
你部署的Azure Web App运行Azure容器注册表镜像,容器可正常启动但站点启动失败,服务使用7007端口,已设置WEBSITES_PORT=7007,Dockerfile为Backstage多阶段构建,此前运行正常,近期出现以下报错:
ERROR - Container for site has exited, failing site start
Ok
2024-06-13T17:05:48.847
ERROR - Container didn't respond to HTTP pings on port: 7007, failing site start. See container logs for debugging.
Ok
2024-06-13T17:05:48.849
INFO - Stopping site because it failed during startup.
按以下步骤排查:
查看容器内部详细启动日志
通过Azure Portal的「日志流」或Azure CLI命令实时查看容器日志,获取服务启动失败的具体原因:az webapp log tail --name <你的应用名> --resource-group <你的资源组名>确认服务监听地址为0.0.0.0
若服务仅绑定localhost,Azure的健康检查无法访问。检查Backstage启动配置:- 启动命令是否包含
--listen 0.0.0.0:7007参数 - 配置文件中是否设置
listen: 0.0.0.0
- 启动命令是否包含
验证容器内端口监听状态
进入容器内部,检查7007端口是否被正确占用:- 执行命令进入容器:
az webapp exec --name <你的应用名> --resource-group <你的资源组名> --command "bash" - 查看端口监听情况:
netstat -tulpn | grep 7007 # 或ss命令(若netstat未安装) ss -tulpn | grep 7007
确认输出中存在Backstage服务进程,且监听地址为
0.0.0.0:7007而非127.0.0.1:7007。- 执行命令进入容器:
排查镜像或依赖变更
故障出现在两周前,需检查:- Dockerfile是否有修改(比如基础镜像版本、构建步骤变更)
- Backstage版本是否更新,是否存在兼容性问题
- 依赖包是否有版本升级导致启动失败
验证Azure Web App配置有效性
确认WEBSITES_PORT环境变量已正确生效:az webapp config appsettings list --name <你的应用名> --resource-group <你的资源组名>检查输出中
WEBSITES_PORT的值是否为7007,同时排查是否有新增环境变量干扰服务启动。调整健康检查配置
Azure默认健康检查访问根路径,若Backstage根路径需认证或重定向,会导致检查失败:- 设置
WEBSITES_HEALTHCHECK_PATH环境变量为Backstage的健康检查端点(如/health,需确认服务提供该端点) - 测试容器内访问健康路径是否返回200状态码:
curl -I http://localhost:7007/<健康路径>
- 设置
检查资源限制
查看Azure Web App的CPU、内存指标,若资源耗尽会导致服务启动后崩溃:- 在Azure Portal的「指标」中查看CPU使用率、内存占用趋势
- 必要时升级App Service计划层级,增加资源配额
内容的提问来源于stack exchange,提问作者anemoneyy

