docker部署運行jar全過程
進入微服務時代后,大家都使用springboot來開發(fā)微服務,然后打成jar包放到docker容器中運行。
通常的方式是將jar包以鏡像images形式安裝到docker中,然后創(chuàng)建容器運行。
并且idea開發(fā)工具還支持直接在項目編譯的時候生成鏡像,也比較方面。
但是我在用上述方法的時候發(fā)現(xiàn)每個微服務jar包本身并不大,只有不到幾十M大小,但是生成的鏡像卻有500M大?。ㄖ饕抢锩姘薺ava等的環(huán)境),而且每次更新jar包都得更新鏡像,用起來不方面,看起來也不舒服,所以在想有沒有更好的方法。
我們都知道jar是運行在java環(huán)境中,所以只要容器中有java環(huán)境就可以運行jar包,鏡像方式運行的原理也是如此。因此我們基于java鏡像就可以實現(xiàn)jar包運行。
1、拉取java鏡像
[root@iZbp13sno1lc2yxlhjc4b3Z ~]# docker pull java:8 [root@iZbp13sno1lc2yxlhjc4b3Z ~]# docker images java 8 d23bdf5b1b1b 3 years ago 643MB
拉取java 8的鏡像
2、jar包上傳到服務器
[root@iZbp13sno1lc2yxlhjc4b3Z pms]# ls card-api-pms-0.0.1.jar
將springboot的jar包上傳到服務器指定目錄。
3、創(chuàng)建容器運行jar
[root@iZbp13sno1lc2yxlhjc4b3Z pms]docker run -d --name ys-pms -p 8781:8081 \ -v /app/pms/card-api-pms-0.0.1.jar:/usr/app.jar java:8 \ java -jar -Xms256m -Xmx256m /usr/app.jar
命令解析:
- -p 8781:8081 端口映射,8081是jar里面內(nèi)置tomcat的端口。
- -v /app/pms/card-api-pms-0.0.1.jar:/usr/app.jar 將容器中/usr/app.jar文件掛載到主機/app/pms/card-api-pms-0.0.1.jar文件,這個是關鍵。
- java:8 使用java 8的版本鏡像
- java -jar -Xms256m -Xmx256m /usr/app.jar 運行/usr/app.jar的jar包,前面已經(jīng)將此jar包跟主機文件掛載,所以實際運行的就是主機目錄下的card-api-pms-0.0.1.jar;另外在運行jar包的時候指定了分配給jvm的內(nèi)存大小,你不指定就會使用默認機制占用內(nèi)存。
登錄portainer控制臺查看服務運行情況:
總結
好了,現(xiàn)在jar包已經(jīng)在運行了。如果我們的jar包更新了,只需要將主機上的jar包替換重啟即可,是不是很方便。
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
詳解使用Dockerfile創(chuàng)建帶Apache服務的CentOS Docker鏡像
本篇文章主要介紹了使用Dockerfile創(chuàng)建帶Apache服務的CentOS Docker鏡像,具有一定的參考價值,有興趣的可以了解一下。2016-12-12docker啟動鏡像失敗后如何用日志logs查找失敗原因及解決
在使用docker的時候,在某些未知的情況下可能啟動了容器,但是過了沒幾秒容器自動退出了,這個時候如何排查問題呢?下面這篇文章主要給大家介紹了關于docker啟動鏡像失敗后如何用日志logs查找失敗原因及解決的相關資料,需要的朋友可以參考下2023-05-05docker安裝Jenkins執(zhí)行構建jar運行方式
這篇文章主要介紹了docker安裝Jenkins執(zhí)行構建jar運行方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-05-05