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

AWS App Runner部署报错Create Failed:健康检查失败问题问询

AWS App Runner Nginx 镜像健康检查失败排查方案

1 优先核对容器内部监听端口与App Runner配置的匹配性

这是此类问题最高发的诱因:你本地运行时使用的-p 8080:xx端口映射规则,是将宿主机8080端口转发到容器内部的服务端口,不代表容器内Nginx实际监听的是8080。

  • 执行以下命令验证容器内部端口是否可通:
    # 启动容器不做端口映射
    docker run -d --name nginx-test <你的镜像名>
    # 进入容器内部探测8080端口
    docker exec nginx-test curl http://localhost:8080/
    
    如果返回连接拒绝,说明镜像内Nginx实际监听的不是8080端口,默认官方Nginx镜像监听端口为80。
  • 修正方案:将App Runner的服务端口、健康检查端口都改为容器内Nginx实际监听的端口即可,不需要和你本地映射的宿主机端口保持一致。

2 调整健康检查参数适配服务启动特性

  • 确认健康检查协议选择为HTTP,不要错选TCP、HTTPS协议(未配置SSL的Nginx不支持HTTPS探测)。
  • 如果你的镜像有自定义启动脚本,Nginx不会在容器启动后立刻就绪,可适当调大健康检查参数:
    • 初始延迟:建议设置为5~15秒,避免服务未启动就开始探测
    • 检查间隔:调整为5秒
    • 健康阈值:设置为2~3次,允许偶发探测失败

3 验证健康检查路径返回状态码

App Runner HTTP健康检查要求返回200~399区间的状态码才判定为成功:

  • 本地执行命令验证根路径返回码:
    docker exec nginx-test curl -I http://localhost:<容器内实际端口>/
    
    如果返回301/302重定向、403/404等错误码,要么修改Nginx配置让根路径返回200状态码,要么将健康检查路径改为可正常返回200的路径。

4 排查权限与网络限制

  • 如果你使用非root用户运行容器,不要配置Nginx监听1024以下的端口(非root用户默认无权限监听低端口),建议改为8080、8000等高端口,同时同步App Runner的端口配置。
  • 如果你的App Runner服务接入了自定义VPC,确认VPC安全组没有拦截健康检查流量对服务端口的访问。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 00:57:01