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

Azure Container Instance请求无法转发至容器:Spring Boot部署404问题排查求助

可能的原因及排查步骤

我来帮你梳理下几个最可能的原因,你可以逐一排查:

  • DNS解析未生效,请求根本没到你的容器
    虽然az container show返回了正确的FQDN和IP,但Azure的DNS解析偶尔会有延迟(尤其是刚创建容器的前几分钟)。你可以在本地终端跑ping X.centralus.azurecontainer.io,看看返回的IP是不是和az container show里的Y完全一致。如果不一致,说明DNS还没同步,等10-15分钟再试,或者直接用IPY访问,先排除DNS的问题。

  • Spring Boot应用的端口/上下文路径配置和预期不符
    你看到Tomcat在80端口启动,但得确认Spring Boot的配置确实匹配:

    • 检查application.properties或application.yml里的server.port是不是设为80(如果是内嵌Tomcat的话);
    • 有没有设置server.servlet.context-path?比如设成了/api,那直接访问根路径/肯定会404,得访问X.centralus.azurecontainer.io/api才行;
    • 如果是WAR包部署到独立Tomcat的情况,有没有把WAR包改名为ROOT.war?没改名的话,Tomcat会把它部署在以WAR包名为前缀的路径下,比如myapp.war就得访问/myapp。
  • Azure网络安全组(NSG)拦截了80端口的入站流量
    虽然Azure容器实例默认会为配置的公共端口开放入站规则,但如果你的容器关联了自定义虚拟网络和NSG,或者手动修改过规则,可能80端口的请求被拦了。去Azure门户的容器实例页面,点“网络”选项卡,确认入站规则里有允许TCP 80的规则,源设为Any或者你的本地IP。如果规则不对,添加一条允许80端口入站的规则再测试。

  • Spring Boot应用没完全启动,或者启动失败
    你说日志里只有Tomcat启动的记录,但有没有看到Spring Boot的核心启动日志?比如类似Started Application in X seconds的输出?如果没有,说明应用可能卡在启动过程中了——比如依赖缺失、数据库连接失败、配置错误等,导致Spring上下文没初始化,自然处理不了请求。仔细翻容器日志,找有没有ERROR级别的报错信息,定位启动失败的原因。

  • Docker镜像或启动命令有问题
    检查镜像构建过程:有没有把应用的Jar/WAR包正确复制到镜像里的指定位置?启动命令是不是正确?比如Jar包的话,是不是java -jar your-app.jar?如果命令错了或者包没放对,容器里可能只有Tomcat在跑,但没加载你的Spring Boot应用,自然访问根路径会404。

你可以先从直接用IP访问开始排查,排除DNS问题后,再检查应用配置和日志,应该能很快找到问题所在。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 13:37:39