docker 使用tomcat部署SpringBoot的war包

首先我们的springboot项目要先能打包为war包

在pom中添加

<packaging>war</packaging>

添加pom依赖排出tomcat

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

在pom中添加项目名称

 <build>
        <finalName>tm_eureka</finalName>
</build>

@SpringBootApplication注解的类的同级目录新建类

package com.tm;

import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;

public class ServletInitializer extends SpringBootServletInitializer {

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        //Application的类名
        return application.sources(AppEureka.class);
    }

}

配置webapp

 

 

有时候路径会不对,要让路径在下面生成的webapp目录下面

保存成功后,执行下面两步,先清理在生成

在我们生成的这个war中,在tomcat中使用的时候,yml配置文件中配置的端口号与请求路径都失效了,

server:
  port: 端口
  servlet:
    context-path: 请求路径

现在的端口号是使用tomcat提供的端口号,需要该的话就要去tomcat的配置文件修改,请求路径变成了

IP:端口/tm_eureka/具体的请求地址

现在我们在docker下下载tomcat与jdk

启动tomcat

 docker run --name tomcat -p 81:8080 -v /tomcat/webapps/:/usr/local/tomcat/webapps/ -d tomcat

这里挂载了外部的webapps目录,方便我们上传项目

将生成的war包上传到linux下/tomcat/webapps目录下面

然后重启容器

tomcat会自动给我们解压项目

然后请求是在端口后面加上tm_eureka就可以访问

如果不要在请求地址中加上项目名称,在webapps中修改项目的文件名称ROOT,就可以在不添加项目名称

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章