docker部署springboot項(xiàng)目實(shí)踐(更新無需重新build)
一、問題
之前的文章記錄過利用docker部署springboot項(xiàng)目,使用的方式是直接將jar一起打包,構(gòu)建成一個(gè)新的鏡像,再運(yùn)行鏡像的方式進(jìn)行部署,然而這里有一種缺點(diǎn),就是后面更新jar包,都需要?jiǎng)h掉舊的鏡像,重新build,再運(yùn)行,為了解決這種問題,下面列了部署springboot項(xiàng)目的另一種姿勢(shì)。
二、環(huán)境
以下是本人此次搭建的環(huán)境
- 部署方式:docker
- 服務(wù)器:linux服務(wù)器
- 服務(wù)器操作系統(tǒng):CentOS 7
三、部署jar包
先創(chuàng)建springboot項(xiàng)目,并且確??梢赃\(yùn)行,下面簡(jiǎn)單寫了一個(gè)接口


再將該項(xiàng)目進(jìn)行maven打包生成一個(gè)jar,然后在linux服務(wù)器上面創(chuàng)建一個(gè)目錄存放該jar包,如下圖

然后在linux服務(wù)器上面創(chuàng)建一個(gè)目錄,用于存放Dockerfile文件,如下圖

Dockerfile里面的內(nèi)容如下
FROM java EXPOSE 8001 ENTRYPOINT ["java","-Xmx256m","-Xms256m","-jar","/data/java/jar/springboot-docker-test.jar"]
注意:
這里的/data/java/jar/springboot-docker-test.jar路徑是后續(xù)容器里面運(yùn)行的jar包的路徑,路徑可以自己隨便定義,后面我們會(huì)在宿主機(jī)上面把這個(gè)路徑掛載出來即可
在Dockerfile路徑下構(gòu)建鏡像

構(gòu)建成功后,啟動(dòng)容器
docker run -d -p 8001:8001 --name test1 -it -v /root/data/docker_data/springboot-docker-test/jar:/data/java/jar springboot-test
注:
(1)重點(diǎn)說明一下”-v /root/data/docker_data/springboot-docker-test/jar:/data/java/jar“這個(gè)命令,/root/data/docker_data/springboot-docker-test/jar這個(gè)路徑是我們把打包的jar上傳到linux服務(wù)器上面的路徑,/data/java/jar這個(gè)路徑是Dockerfile文件里面執(zhí)行命令的路徑(ENTRYPOINT),意思就是把宿主機(jī)的jar路徑掛載進(jìn)容器里面去,這樣啟動(dòng)的時(shí)候用的jar包就是宿主機(jī)的jar包,后續(xù)更新jar的時(shí)候,只要替換宿主機(jī)的jar即可,之后容器重新啟動(dòng)就實(shí)現(xiàn)了更新

啟動(dòng)后訪問路徑

四、更新jar包
例如在原來的代碼上,又新加了個(gè)接口

然后重新maven打包,再把jar替換掉服務(wù)器上面的jar即可,記得jar名稱得保持一致

總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
docker 數(shù)據(jù)目錄遷移的兩種實(shí)現(xiàn)方法
本文主要介紹了docker 數(shù)據(jù)目錄遷移的兩種實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2025-03-03
docker中設(shè)置環(huán)境變量的多種實(shí)現(xiàn)方式
這篇文章主要介紹了docker中設(shè)置環(huán)境變量的多種實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2025-07-07
關(guān)于Docker?Desktop的WSL報(bào)錯(cuò)問題解決辦法
這篇文章主要介紹了關(guān)于Docker?Desktop的WSL報(bào)錯(cuò)問題解決辦法的相關(guān)資料,排查發(fā)現(xiàn)是因清理%temp%文件夾誤刪關(guān)鍵WSL文件,文中將解決辦法介紹的非常詳細(xì),需要的朋友可以參考下2025-03-03
Docker容器時(shí)間與宿主機(jī)不一致的解決方案
在日常開發(fā)和運(yùn)維工作中,許多開發(fā)者在使用 Docker 時(shí)會(huì)遇到一個(gè)常見問題:容器內(nèi)的時(shí)間比宿主機(jī)慢了 8 小時(shí),這種情況尤其在中國(guó)地區(qū)(使用東八區(qū)時(shí)間)更為常見,本文給大家介紹了Docker容器時(shí)間與宿主機(jī)不一致的三種解決方案,需要的朋友可以參考下2025-05-05
解決docker不加載 /etc/docker/daemon.json文件的問題小結(jié)
在Ubuntu 24.04 LTS Server上安裝Docker后,發(fā)現(xiàn)鏡像不保存且配置文件路徑不正確,通過檢查發(fā)現(xiàn)Docker服務(wù)啟動(dòng)時(shí)加載了非預(yù)期的配置文件,最終通過修改服務(wù)配置文件解決了問題,感興趣的朋友跟隨小編一起看看吧2024-11-11
Docker多階段構(gòu)建鏡像multi-stage詳解
多階段構(gòu)建是Docker 17.05及以上版本的新特性,允許在一個(gè)Dockerfile中使用多個(gè)階段,每個(gè)階段可以有一個(gè)獨(dú)立的基礎(chǔ)鏡像,并且可以通過COPY --from命令在階段之間傳遞文件,這樣可以有效地減少最終鏡像的大小,只保留必要的文件2025-10-10

