从Azure Container Registry部署Docker镜像后仅显示默认页面求助
我之前碰到过完全一样的问题,折腾了好一阵才找到根源,给你整理几个关键排查步骤,应该能帮你定位问题:
排查Azure Web App未加载Docker镜像内容的核心步骤
先确认部署配置的正确性
- 检查容器设置细节:登录Azure门户找到你的Web App,进入「容器设置」页面,务必确认这几个点:
- 镜像源是不是你推送的那个Azure Container Registry(ACR)
- 镜像名称和标签完全匹配你推送的版本(别把
latest标签搞错,或者不小心用了旧的镜像版本) - 启动命令是否正确配置:如果你的应用需要特定命令才能启动(比如
npm start、gunicorn app:app这类),这里必须填写,否则容器可能无法正常启动,App Service会自动 fallback 到默认页面。
- 验证ACR访问权限:确保Web App有权限拉取ACR中的镜像。可以在ACR的「访问控制(IAM)」面板中,给Web App的系统分配身份(或者对应的服务主体)添加AcrPull角色;如果是用用户名密码拉取,要确认容器设置里的凭据是ACR管理员账号(或专用服务账号)的正确信息。
检查容器是否实际启动运行
- 查看容器启动日志:在Web App的「日志流」页面实时查看,或者用Azure CLI命令:
这里能看到容器启动过程中的报错,比如端口不匹配、依赖缺失、环境变量错误等——很多时候默认页面显示,就是因为容器根本没成功启动。az webapp log tail --name <你的应用名称> --resource-group <你的资源组名称> - 确认端口一致性:Dockerfile里的
EXPOSE端口,要和Web App容器设置中的「端口」字段完全一致,同时你的应用必须确实在这个端口上监听请求(比如Node.js应用要确保app.listen(3000)中的端口和配置一致)。
验证部署是否触发了镜像拉取
- 查看部署中心记录:进入Web App的「部署中心」,查看最近的部署日志,确认是否有成功拉取镜像的记录。如果显示部署成功但无镜像相关操作,试着重新保存一次容器设置,强制触发重新部署。
- 通过Kudu API检查容器状态:访问
https://<my-site>.scm.azurewebsites.net/api/containers/json(可以直接在浏览器打开,或者在调试控制台调用),如果返回空数组,说明容器完全没被启动,问题大概率出在配置或权限上。
几个容易忽略的细节
- 镜像启动耗时:如果你的镜像体积较大,App Service拉取和启动可能需要5-10分钟,别着急刷新页面,给足时间等待容器初始化完成。
- 网络限制:如果你的ACR设置了虚拟网络或防火墙规则,要确保Web App所在的网络能访问ACR,或者在ACR防火墙中添加Web App的出站IP地址作为例外。
如果以上步骤都排查完还是没解决,建议贴出容器设置的截图(打码敏感信息)和日志流中的关键报错内容,方便进一步定位问题。
内容的提问来源于stack exchange,提问作者Hafiz Temuri
相关产品推荐
相关产品推荐

