如何打jar包為Docker鏡像并部署
* 解決打包和部署應(yīng)用程序的痛點:
將Java應(yīng)用程序打包為可移植的Docker鏡像,并通過容器化方式實現(xiàn)應(yīng)用程序的部署和運行。這種方法可以解決以下痛點:
- 環(huán)境一致性問題:在不同的環(huán)境中運行應(yīng)用程序可能會遇到依賴環(huán)境配置不一致的問題,導致應(yīng)用程序無法正常運行。使用Docker鏡像可以將應(yīng)用程序與其依賴的運行時環(huán)境打包在一起,確保在任何環(huán)境中都能以相同的方式運行。
- 依賴管理困難:應(yīng)用程序的依賴關(guān)系可能復雜且難以管理,不同的應(yīng)用程序可能需要不同版本的依賴庫。將應(yīng)用程序打包為Docker鏡像可以將所有依賴項一起打包,避免了在不同環(huán)境中手動配置和管理依賴的麻煩。
- 部署和升級復雜性:傳統(tǒng)的應(yīng)用程序部署和升級可能涉及手動復制文件、配置環(huán)境、啟動服務(wù)等繁瑣步驟,容易出錯且耗時。使用Docker鏡像可以簡化部署和升級過程,只需通過運行容器即可完成應(yīng)用程序的啟動和更新,大大減少了部署的復雜性和風險。
- 資源利用和擴展性:傳統(tǒng)部署方式可能會面臨資源浪費和擴展性不足的問題,例如每個應(yīng)用程序都需要獨立的服務(wù)器資源。而使用Docker容器化可以更好地利用服務(wù)器資源,多個容器可以在同一臺物理機上運行,實現(xiàn)資源共享和擴展。
通過將應(yīng)用程序打包為Docker鏡像,并在容器中運行,可以提供更高的靈活性、可移植性和可靠性,簡化應(yīng)用程序的部署和管理,提升開發(fā)和運維效率,降低系統(tǒng)運行成本。*
解決打包配置版本問題:
在最大的父項目pom文件下規(guī)定一個
spring-boot-maven-plugin.version版本(降級,高版本不需要)
<spring-boot-maven-plugin.version>2.4.3</spring-boot-maven-plugin.version>
在全局內(nèi)的需要打包的項目內(nèi)的pom文件下寫此打包配置依賴:
<build> <finalName>${project.artifactId}</finalName> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <version>${spring-boot-maven-plugin.version}</version> <executions> <execution> <goals> <goal>repackage</goal> </goals> </execution> </executions> </plugin> </plugins> </build>
打包部署鏡像運行容器
clean+package打jar包
復制此jar包到 服務(wù)器 某個目錄下
在項目根目錄下,創(chuàng)建Dockerfile的文本文件,并將以下內(nèi)容添加到文件中:
內(nèi)容:
# 基礎(chǔ)鏡像 FROM openjdk:8-jre # author(可更換) MAINTAINER luo # 掛載目錄(可更換) VOLUME /home/luo # 創(chuàng)建目錄(可更換和上面保持一致) RUN mkdir -p /home/luo # 指定路徑(可更換和上面保持一致) WORKDIR /home/luo # 復制jar文件到路徑(YouName=換成你的=jar包名稱) COPY ./jar/YouName.jar /home/luo/YouName.jar #下面也也可增加復制配置文件到同級路徑下 # 啟動認證服務(wù) ENTRYPOINT ["java","-jar","YouName.jar"]
把Dockerfile腳本也移動到j(luò)ar包的服務(wù)器目錄下:
把jar包打包成鏡像運行成容器
1.在項目根目錄下執(zhí)行以下命令,將jar包打包成docker鏡像:
your-jar-file.jar
是你要打包的jar包的文件名。
docker build -t your-image-name .
如果要給此鏡像一個版本號那就用這個語句:
其中,“your-image-name”是鏡像名稱,“1.0”是版本號,“.”表示Dockerfile文件在當前目錄中。
docker build -t your-image-name:1.0 .
2.執(zhí)行以下命令把鏡像啟動容器:
其中,-p
參數(shù)用于指定容器內(nèi)部端口映射到主機的端口,8080:8080
表示將容器內(nèi)部的8080端口映射到主機的8080端口上。-d
參數(shù)用于指定容器在后臺運行。
docker run -d -p 8080:8080 your-image-name
第一個端口號是主機(本地)端口號,后面的端口號是服務(wù)器內(nèi)部端口號
3.最后:
訪問http://localhost:8080
即可訪問應(yīng)用程序。
解決問題
1.Docker部署鏡像時,報jdk下載失敗的問題:
有圖如例:
解決:
1.直接在Docker公共鏡像倉庫拉取所需要的jdk(注意:版本要一致!!)
docker pull openjdk:8-jre
2.如果還下載不下來就使用此方案:
http://chabaoo.cn/server/304213uch.htm
到此這篇關(guān)于如何打jar包為Docker鏡像并部署的文章就介紹到這了,更多相關(guān)Docker鏡像部署內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
docker國內(nèi)鏡像源配置及走代理設(shè)置小結(jié)
本文主要介紹了配置Docker國內(nèi)鏡像源及代理設(shè)置,以加快鏡像拉取速度,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2025-01-01Docker安裝Kong API Gateway并使用的詳細教程
這篇文章主要介紹了Docker安裝Kong API Gateway并使用,本文通過圖文實例相結(jié)合給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-08-08docker完整配置nginx+php+mysql的方法步驟
這篇文章主要介紹了docker完整配置nginx+php+mysql的方法步驟,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-02-02Logshark調(diào)試Logstash及Filebeat?pipelines使用詳解
這篇文章主要為大家介紹了Logshark調(diào)試Logstash及Filebeat?pipelines使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-12-12docker安裝prometheus和grafana的詳細過程
prometheus通過各種Exporter采集到監(jiān)控數(shù)據(jù),然后存儲進prometheus中,以供查詢展示,這篇文章主要介紹了docker安裝prometheus和grafana,需要的朋友可以參考下2023-02-02