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

Docker容器化的Spring Boot应用API内外均返回404无法访问求助

排查与解决方案

1. 优先确认镜像是否为最新版本

代码更新后必须重新构建镜像,否则容器运行的仍是无对应接口的旧版本镜像,执行以下命令更新:

mvn clean package
docker build -t spring-boot-app .
docker compose up -d spring-boot-app

2. 检查Spring Boot应用启动状态与日志

执行以下命令查看容器内应用运行日志:

docker logs spring-boot-app

重点核查两个点:

  • 应用是否正常启动完成,无报错、无异常退出
  • 日志中是否存在对应接口的映射记录,类似Mapped "{[/kafka/health-check],methods=[GET]}",如果没有该记录说明接口未被Spring容器注册
    • 若未注册:首先修改Controller类名,避免类名与@RestController注解同名导致的扫描异常,其次确认Spring Boot启动类位于Controller所在包的上级目录,保证组件扫描能覆盖到Controller类
    • 若已注册:检查application.yml/application.properties中是否配置了server.servlet.context-path上下文路径,如果配置了前缀,访问路径需要加上对应前缀,例如配置server.servlet.context-path=/api,则接口完整路径为http://localhost:8080/api/kafka/health-check

3. 核查应用端口配置

检查配置文件中server.port是否为8080,如果自定义了其他端口,需要同步修改Dockerfile的EXPOSE配置、Docker Compose中spring-boot-app服务的端口映射配置。

4. 核查打包配置

确认pom.xml中已配置spring-boot-maven-plugin插件,否则打出来的JAR包不是可执行的Fat Jar,会出现类扫描缺失、主类找不到等问题,插件配置参考:

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

额外优化提示:后续Kafka通信可提前调整配置,将KAFKA_ADVERTISED_HOST_NAME改为kafka(Docker Compose中Kafka服务的名称),Spring Boot应用中Kafka连接地址配置为kafka:9092即可实现容器内网稳定通信。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 12:15:05