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,就可以在不添加項目名稱

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