為什麼要容器化部署專案?
為了模擬測試和UAT的環境,使用tomcat容器部署一個springboot專案是非常方便,因為可以很方便快捷的拉取符合環境要求的tomcat和資料庫,而且現在很多大企業的生產環境都會把專案容器化執行.配置好引數一條命令就可實現專案啟動.
第一步 將springboot專案打成war包
1、 由於伺服器上面使用的一般是war包,所以此處將專案打包方式由jar包->war包
在pom.xml中新增
<packaging>war</packaging>
新增<packaging>war</packaging>
2、使用外部伺服器,所以去除Springboot內建的伺服器
pom.xml中新增如下:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
除Springboot內建的伺服器
3. 重點:Springboot專案啟動時,會建立Spring容器,容器中包含大量的Servlet、Filter和Spring Beans物件,此時由於使用外部的伺服器,所以我們需要將Spring容器中的物件繫結到伺服器上,我們採用官方推薦的方式,讓啟動類繼承SpringBootServletInitiallizer並重寫configure方法,官方demo如下:
繼承SpringBootServletInitiallizer方式
4 . 使用外部Tomcat部署訪問的時候,application.properties(或者application.yml)中配置的
server.port=
server.servlet.context-path=
將失效,請使用tomcat的埠,tomcat,webapps下專案名進行訪問。為了防止應用上下文所導致的專案訪問資源載入不到的問題,建議pom.xml檔案中<build></build>標籤下新增<finalName></finalName>標籤:
<build>
<finalName>class15_springboot_config</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
防止載入不到專案直接指定
5. 正常的clean 打包操作後將war包直接放在tomcat的webapps目錄下面啟動就ok;
打包成功
war出現了
6. 將war包copy到comcat容器的app目錄
將springboot專案的war使用docker cp 檔案 containId:/目錄 命令複製到docker webapps
目錄就可以訪問到了.tomcat容器會自動檢測到專案,copy到app下不需要重啟tomcat也會自動檢測到專案並且解壓.
7. 訪問路徑要加上專案路徑就可以訪問了.
以後重啟專案和資料庫只需重啟docker 容器就ok.簡單快捷.
感謝查閱!