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

Spring Boot集成Docker后RequestMapping请求失效问题排查

Spring Boot Docker部署后接口404问题排查与解决

问题描述

用Spring Boot实现学生CRUD接口,本地测试所有接口(localhost:8080/api/v1/person及子路径)正常,但Docker容器启动后,所有自定义接口请求均返回404错误,容器本身运行正常。

排查与解决步骤

1. 确认Docker端口映射是否正确

Docker运行时必须将容器内的8080端口映射到主机的8080端口,否则主机请求无法到达容器内的服务。

  • 正确的运行命令示例:
    docker run -d -p 8080:8080 --name student-crud 你的镜像名称:标签
    
  • 验证端口映射:执行docker ps,查看容器的PORTS列,需显示0.0.0.0:8080->8080/tcp或:::8080->8080/tcp。

2. 检查Jar包是否正确构建

Docker中复制的Jar包可能不是可执行的Spring Boot Jar,导致服务未正确加载接口:

  • 本地先验证Jar包有效性:
    mvn clean package
    java -jar target/[你的Jar文件名].jar
    
    确认本地能正常访问接口后,再重新构建Docker镜像。
  • 确保pom.xml中已引入Spring Boot打包插件,否则生成的Jar无法独立运行:
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
    

3. 检查应用上下文路径配置

如果本地或Docker环境中设置了自定义上下文路径,会导致接口前缀变化:

  • 查看src/main/resources/application.properties(或application.yml),若存在以下配置:
    server.servlet.context-path=/myapp
    
    则Docker部署后的接口路径应为localhost:8080/myapp/api/v1/person;若不需要上下文路径,直接删除该配置。

4. 验证容器内服务启动日志,确认Controller映射

通过容器日志确认Spring Boot是否正确扫描并映射了Controller:

  • 查看日志命令:
    docker logs [容器ID或容器名]
    
  • 搜索关键字Mapped,若能看到类似以下日志,说明接口映射正常:
    Mapped "{POST [/api/v1/person]}" onto public br.com.qtivate.server.model.Response br.com.qtivate.server.api.StudentController.addStudent(br.com.qtivate.server.model.Student)
    
  • 若没有映射记录,检查Spring Boot主类的包结构:
    Spring Boot默认扫描主类所在包及其子包的组件。如果主类不在br.com.qtivate.server包下,需在主类添加扫描配置:
    @SpringBootApplication(scanBasePackages = "br.com.qtivate.server")
    public class StudentApplication {
        public static void main(String[] args) {
            SpringApplication.run(StudentApplication.class, args);
        }
    }
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 11:26:11