問題描述
近日將Spring Boot搭建的項(xiàng)目通過公司統(tǒng)一部署平臺(tái)部署到生產(chǎn)環(huán)境后牺汤,出現(xiàn)了部署時(shí)項(xiàng)目啟動(dòng)日志不存在的問題。
結(jié)果:項(xiàng)目啟動(dòng)失敗十绑。
自查過程
-
下載編譯好的預(yù)發(fā)包到本地聚至,內(nèi)容如下圖,經(jīng)檢查本橙,包的內(nèi)容完全正確扳躬。
-
接下來申請(qǐng)堡壘機(jī)登錄權(quán)限,登錄到容器中甚亭,內(nèi)容如下圖:
結(jié)果:發(fā)現(xiàn)容器中WAR包解壓后的內(nèi)容基本沒有了贷币,只剩下部署平臺(tái)上配置覆蓋的配置文件了。有可能是 WAR包解壓 的時(shí)候出現(xiàn)了問題亏狰。
求助過程
-
向部署平臺(tái)部門的同事求助后役纹,回復(fù)內(nèi)容如下:
-
看了下項(xiàng)目的
pom.xml
,內(nèi)容如下:
果然暇唾!spring-boot-maven-plugin
插件的 excutable
配置沒有設(shè)置為 false
4俾觥!策州!
結(jié)果:修改為false后瘸味,重新編譯,構(gòu)建鏡像够挂,部署旁仿,項(xiàng)目啟動(dòng)成功。問題成功解決孽糖!
問題深入分析
- spring-boot-maven-plugin插件的excutable配置是干啥用的枯冈?
即,如果將這個(gè)配置設(shè)置為 true
办悟,打包出來的 jar/war 就是 可執(zhí)行 的了尘奏,可以用如下方式執(zhí)行:
- 為啥配置為
true
后解壓WAR包的時(shí)候就會(huì)失敗病蛉?
Spring Boot官網(wǎng)上面文檔如是說:
完全可執(zhí)行 的 jar/war 在文件前面嵌入了個(gè) 額外的腳本炫加,這就使得有些命令會(huì)執(zhí)行失敗,比如 jar -xf
等铡恕。
查看統(tǒng)一部署平臺(tái)在構(gòu)建鏡像時(shí)的日志琢感,如下圖丢间,發(fā)現(xiàn)就使用了這個(gè)命令探熔,所以WAR包就會(huì)解壓失敗:娲臁>骷琛柬甥!
總結(jié)
大家將Spring Boot項(xiàng)目打包部署,如果使用 jar -xf
等解壓命令其垄,一定要注意
springboot的maven插件 spring-boot-maven-plugin
的 executable
配置一定要設(shè)置為 false
?疗选!绿满!
不然會(huì)解壓失敱弁狻!