Azure Container Apps后端启动探针失败问题排查求助
Azure Container Apps后端容器启动探针失败(connection refused)排查与解决方案
问题场景
部署环境:Azure Container Apps,包含前后端两个容器实例;后端依赖Postgres灵活服务器和Azure Cache for Redis
问题现象:后端容器系统日志持续报错:Startup probe failed: Get "https://{IP ADDRESS}/": dial tcp {IP ADDRESS}:443: connect: connection refused","Reason":"PodUnhealthy","EventSource":"ContainerAppController",容器反复重启后退出;前端镜像部署正常,后端镜像在App Services/Web Apps中可正常启动(能访问Swagger),已检查环境变量未解决问题。
启动探针失败的排查方案
- 核对应用监听端口与探针配置
后端容器内的应用大概率监听的是HTTP端口(比如80、8080)而非443,但启动探针错误配置成了HTTPS访问。先确认容器内应用的实际监听端口(比如Spring Boot默认8080,ASP.NET Core默认80),然后调整启动探针:将协议改为HTTP,端口设为应用实际监听的端口,路径指定能返回200状态码的健康检查端点(比如/health或根路径/)。 - 调整探针等待参数适配依赖就绪
后端依赖的Postgres和Redis可能还没完全就绪,导致应用启动时初始化失败,健康端点无法响应。可以修改启动探针的initialDelaySeconds(比如设为30秒,给应用足够时间等待依赖)、failureThreshold(比如设为10次,允许多次重试)。 - 再次确认环境变量与网络权限
虽然已检查过环境变量,但要确保Container Apps中配置的数据库连接字符串、Redis参数和App Services完全一致。同时检查Postgres灵活服务器的防火墙规则,是否允许Container Apps的出站IP访问;Redis的访问密钥、端点是否配置正确。 - 本地镜像验证
用Docker本地启动后端容器,传入和Container Apps相同的环境变量,检查容器启动后是否能正常访问健康端点、连接依赖服务。如果本地也出问题,说明镜像本身有配置缺陷;如果本地正常,再排查Container Apps的网络配置。 - 检查Container Apps网络与端口暴露
如果用了自定义VNet,确认容器子网能访问Postgres和Redis的网络;默认网络则检查是否有网络策略阻止内部通信。另外,确认Dockerfile的EXPOSE指令正确,Container Apps部署时指定的目标端口和应用监听端口一致。
查看容器内部控制台日志的方法
- Azure Portal操作
进入后端容器应用的Azure Portal页面,左侧菜单监控下选日志,用以下Kusto查询筛选控制台日志:
或者直接在容器选项卡中,点击对应容器实例,选择查看日志即可看到标准输出/错误日志。ContainerAppConsoleLogs | where ContainerAppName == "<你的后端容器应用名称>" | order by TimeGenerated desc - Azure CLI命令
执行命令实时查看日志:az containerapp logs show --name <后端容器应用名称> --resource-group <资源组名称> --container <容器名称> --follow
内容的提问来源于stack exchange,提问作者Cesar Carr
相关产品推荐
相关产品推荐

