關於springboot的docker部署方案

docker部署springboot應用

關於springboot部署的方式無外乎流行的jar以及傳統的war。

環境:java8
情景:springboot部署
工具:intelliJ idea

war部署

關於war包部署,老生常談,但由於springboot自帶tomcat,故需在配置中去除:

org.springframework.boot
spring-boot-starter-tomcat
provided

或者在springweb依賴中exclude掉該依賴。

關於scope
1.何爲scope?
scope是該依賴的作用域,用來指定依賴的作用範圍。
2.scope的類型有哪些?
compile:默認,編譯打包時會加進來
provided:編譯測試時會加進來,打包不會,也是打war包時需要的
runtime:運行時可用
test:測試時可用
system:系統外引入jar
import:引入父類配置的依賴

補充:
由於打war包配置文件不會加載server.port與application.name,故需要配置finalName,不配置則默認工程名。

部署與常規部署無異。

jar部署

關於jar包部署,常見有兩種方式:自動化部署與手動部署

自動化部署

可通過工具/插件來完成,例如Jekins,idea自帶的docker插件。
jekins部署大家都知道,這裏說下idea自帶的docker插件:
1.插件下載與配置
idea插件庫中找到docker下載,然後配置docker服務器地址:
在這裏插入圖片描述
正常服務器安裝docker後並沒有暴露ip與端口,需要我們手動配置(新增ip與端口):
在這裏插入圖片描述
然後重啓docker:
systemctl daemon-reload
systemctl start docker
防火牆暴露端口:
firewall-cmd --zone=public --add-port=2375/tcp --permanent
2.應用配置
首先,pom配置build中加入docker配置:
在這裏插入圖片描述
目的爲打包後jar放入Dockerfile同級目錄

其次,Dockerfile文件的編寫,可參考官方文檔,這裏作簡單舉例說明:
FROM java:8
VOLUME /tmp
ADD item-bank-service-0.0.1-SNAPSHOT.jar app.jar
RUN bash -c ‘touch /app.jar’
ENTRYPOINT [“java”,"-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
EXPOSE 8085
操作步驟包含不僅限於:
指定java版本->指定鏡像目錄->將jar包改名放入docker->更新時間->運行jar->暴露端口

說明:
jar包運行:java -jar xx.jar

最後,配置執行參數:
在這裏插入圖片描述
其中,指定Dockerfile路徑,配置鏡像名與應用版本、容器名以及綁定的ip端口等。
執行順序:先編譯工程,打包,此時打包會將jar自動copy一份到docker文件同級目錄下,然後執行如上配置後的啓動腳本,會自動化一鍵構建鏡像與容器(控制檯可操作:查看日誌、啓停容器鏡像等):
在這裏插入圖片描述

手動部署:

相比較自動化部署,手動部署就需要我們親自去執行docker的各種指令,手動上傳jar至服務器
1.docker鏡像同步
jar包上傳後需要copy至容器內,可創建鏡像自動操作,或者手動copy,然後啓動。
這裏因爲使用了Dockerfile,所以直接構建docker即可:
docker build -t item-bank-service .
然後輸入docker images可見鏡像已構建完畢
隨後啓動鏡像:
docker run -ti -d --privileged --net=host --name item-bank-service item-bank-service
服務啓動完成。
日誌查看:
docker logs -f item-bank-service
也可以進入docker容器後按照自己配置的log目錄進行查看。

code源碼:https://github.com/lovezmming/spring-development-projects/tree/master/item-bank
微信公衆號:像是風
在這裏插入圖片描述

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