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

SpringBoot应用Docker部署后访问出现404问题求助

问题分析与缺失步骤

你遇到的404问题核心是没有正确处理SpringBoot应用的打包和Docker镜像的内容复制逻辑,具体缺失的步骤如下:

1. 未先构建SpringBoot应用的可执行产物

你当前直接将项目源码COPY到Tomcat的webapps目录,但Tomcat无法运行Java源码,必须先通过Maven/Gradle将项目编译打包成war包(适配外部Tomcat)或可执行jar包(自带内嵌Tomcat)。

2. 若坚持使用Tomcat镜像部署,需修改项目配置并打包为war包

(1)调整项目打包方式与依赖

在pom.xml中修改打包类型,并排除内嵌Tomcat依赖(避免与容器Tomcat冲突):

<!-- 修改打包方式为war -->
<packaging>war</packaging>

<!-- 排除内嵌Tomcat,让外部Tomcat提供运行环境 -->
<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-tomcat</artifactId>
        <scope>provided</scope>
    </dependency>
</dependencies>

(2)修改启动类继承SpringBootServletInitializer

让启动类适配外部Servlet容器:

@SpringBootApplication
public class HelloWorldApplication extends SpringBootServletInitializer {
    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(HelloWorldApplication.class);
    }

    public static void main(String[] args) {
        SpringApplication.run(HelloWorldApplication.class, args);
    }
}

(3)执行打包命令

运行Maven命令生成war包:

mvn clean package -DskipTests

(4)修正Dockerfile的COPY逻辑

将打包好的war包复制到Tomcat的webapps目录,建议重命名为ROOT.war(避免访问时需要加war包名称前缀):

FROM tomcat:9.0-jre17-temurin-focal 
WORKDIR /usr/local/tomcat/webapps 
# 复制target目录下的war包到当前目录,并重命名为ROOT.war
COPY target/helloworld.war ./ROOT.war
EXPOSE 8080 
CMD ["catalina.sh", "run"] 

3. 更简便的替代方案:使用JDK镜像直接运行可执行jar

SpringBoot默认自带内嵌Tomcat,无需依赖外部Tomcat镜像,这种方式更简洁:

(1)打包可执行jar

无需修改项目配置,直接运行Maven命令:

mvn clean package -DskipTests

(2)编写新的Dockerfile

FROM openjdk:17-jdk-slim
WORKDIR /app
# 复制打包好的jar包到容器内
COPY target/helloworld.jar app.jar
EXPOSE 8080
# 运行jar包
CMD ["java", "-jar", "app.jar"]

(3)重新构建并运行镜像

docker build -t firstcode .
docker run -p 8080:8080 firstcode

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 19:49:55