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


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

然后在linux服務器上面創(chuàng)建一個目錄,用于存放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ù)容器里面運行的jar包的路徑,路徑可以自己隨便定義,后面我們會在宿主機上面把這個路徑掛載出來即可
在Dockerfile路徑下構(gòu)建鏡像

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

啟動后訪問路徑

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

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

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

