SpringBoot项目部署到tomcat容器中运行

前言

将SpringBoot项目打包,然后部署到服务器的tomcat容器中运行,踩坑笔记。

一、准备

  • Linux 服务器。
  • 要打包的 SpringBoot 项目
  • tomcat8

二、修改 SpringBoot 项目配置

1、修改打包方式

pom.xml 中打包方式修改为 war 。

<packaging>war</packaging>

2、修改项目依赖

将 SpringBoot 自带 tomcat 排除(设置为只在编译和测试阶段有效)。

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-tomcat</artifactId>
    <scope>provided</scope>
</dependency>

3、修改最终打出的 war 包的名称

在 pom.xml 的 <build> 标签中添加( docker 是最终打出的 war 包的文件名,可自己取名):

<finalName>docker</finalName>

4、修改 application.yml(非必须)

设置端口号和 context-path:

  1. 端口号设置为和 要部署的 tomcat 一致。

  2. context-path 设置为和 war 包文件名一致。

这两个步骤都不是必须的,这两个值在部署到 tomcat 之后也是不起效果的,设置这两个值只是为了在本地测试时和在 tomcat 运行时端口号和 url 保持一致。

server:
  port: 8080
  servlet:
    context-path: /docker

三、修改 SpringBoot 项目启动类

启动类继承 org.springframework.boot.web.servlet.support.SpringBootServletInitializer 并重写其 configure 方法。

@SpringBootApplication
public class DockerImageTestApplication extends SpringBootServletInitializer {

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
        return builder.sources(DockerImageTestApplication.class);
    }

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

}

四、打包并部署项目

使用 maven 打包项目。

运行 package -f pom.xml 或直接执行 idea 中 maven 的打包命令。

将打好 war 包放到 tomcat 的 webapps 目录下(不用解压,tomcat 运行时会自动解压)。

执行 tomcat/bin/startup.sh 启动 tomcat 。

五、访问项目

使用浏览器访问项目中的接口吧(不要忘记防火墙开放 8080 端口哦)

http://192.168.40.140:8080/docker/hello

最后:踩坑记录

1、刚开始以为只需要将打包方式改为 war 就可以了,结果打脸了。。。

2、引入 spring-boot-starter-tomcat 依赖时一定设置 scope 为 provided (相当于 tomcat 依赖只在本地运行和测试的时候有效,打包的时候会排除这个依赖)。

3、不要忘记修改启动类(在启动类同样的包里新建一个类继承 SpringBootServletInitializer 也是可以的)。

4、war 包的名称决定了你访问项目 url 的前缀,这个不要忘记(如果不想要前缀,可以将 war 包命名为 ROOT)。

5、本地打包的 jdk 版本一定要和服务器的 jdk 版本保持一致,jdk 版本不一致,tomcat 启动时会忽略这个项目,而且不会报错,导致访问项目 404 。(我就遇到了这个问题,蒙圈了好久。。。。。。)

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值