最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

如何在Docker中部署運(yùn)行jar

 更新時(shí)間:2023年11月27日 09:13:25   作者:justry_deng  
這篇文章主要介紹了如何在Docker中部署運(yùn)行jar問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

基本前提條件

1、系統(tǒng)已安裝Docker。

2、系統(tǒng)可上網(wǎng)。

第一大步

docker search justrydeng搜索Docker的JDK鏡像

注:這是本人自己組裝并上傳到Docker官方倉(cāng)庫(kù)里的一個(gè)jdk8的鏡像。如果讀者不想用這個(gè)鏡像,那么也可以使

用其他的jdk鏡像。

第二大步

docker pull justrydeng/jdk8拉取(下載)鏡像

此時(shí),就可以看到:本地有鏡像了:

第三大步

根據(jù)要運(yùn)行的.jar文件,使用Dockerfile + build生成對(duì)應(yīng)的新鏡像,并利用該鏡像生成容器

假設(shè):我們要運(yùn)行的jar包是jenkins-0.0.1-SNAPSHOT.jar。

第一小步:創(chuàng)建一個(gè)Dockerfile文件并編寫(xiě),如(這是編寫(xiě)后的樣子):

FROM justrydeng/jdk8
MAINTAINER dengshuai<13548417409@163.com>
RUN mkdir /var/jarDir && mkdir /var/jarDir/jenkins-docker-test
CMD ["nohup","java","-jar","/var/jarDir/jenkins-docker-test/jenkins-0.0.1-SNAPSHOT.jar","&"]

提示:此CMD里為啟動(dòng)jar包的指令,根據(jù)不同的需求,編寫(xiě)對(duì)應(yīng)的啟動(dòng)jar包指令即可。

說(shuō)明一:RUN指令的作用是當(dāng)利用新的鏡像創(chuàng)建容器后,容器馬上再創(chuàng)建一個(gè)目錄,來(lái)放置后面會(huì)放進(jìn)去的jar文件,這么做的目的是為了歸類(lèi)方便管理。

追注:實(shí)際上,此一步不是必要的,因?yàn)橐话愣?一個(gè)Docker容器就運(yùn)行一個(gè)jar包,所以也可以直接將jar包放置在/下也行。

說(shuō)明二:CMD指令的作用是:當(dāng)docker start 啟動(dòng)容器后(注意:是啟動(dòng),而不是創(chuàng)建),會(huì)馬上執(zhí)行該指令。

第二小步:使用docker build指令,生成新的鏡像;如這里:

docker build -t justrydeng/jar . -f jarDockerfile

說(shuō)明一:因?yàn)槲覀儎?chuàng)建新的鏡像時(shí),不需要什么外部的東西,所以我們指定其上下文“母體”時(shí),最好指定一個(gè)空的文件夾或者指定一個(gè)幾乎不含內(nèi)容的文件夾。本人這里為了方便,指定的是當(dāng)前文件夾。

此時(shí),可看見(jiàn),已經(jīng)生成了新的鏡像:

第三小步:使用docker run指令,配置映射、生成容器,如:

docker run -p 8080:8080 --name jenkins-docker-test -d justrydeng/jar

說(shuō)明一:-p 8080:8080作用是,將宿主機(jī)的端口8080(前面那個(gè)),與docker的端口8080(后面那個(gè))映射。

說(shuō)明二:docker ps 只能查看正在運(yùn)行著的容器,而docker ps -a可以查看所有的容器。

第四大步

使用docker cp將宿主機(jī)中的jar包,拷貝至容器中的對(duì)應(yīng)位置

如:

docker cp jenkins-0.0.1-SNAPSHOT.jar jenkins-docker-test:/var/jarDir/jenkins-docker-test

說(shuō)明一:將jar包放進(jìn)容器中的對(duì)應(yīng)的位置(即:Dockerfile的CMD指令對(duì)應(yīng)的位置)。

說(shuō)明二:只要容器存在(無(wú)論容器是否正在運(yùn)行),就能將東西放進(jìn)去。

第五大步

docker start啟動(dòng)容器即可

如:

docker start jenkins-docker-test

第六大步

http://宿主機(jī)ip:映射后的宿主機(jī)端口訪(fǎng)問(wèn)測(cè)試

提示,該jar包中的Controller方法有:

訪(fǎng)問(wèn):http://10.8.109.60:8080/jenkins/test?name=JustryDeng

由此可見(jiàn):在Docker的容器中部署運(yùn)行jar包,成功!

拓展一

編寫(xiě)一個(gè)通用的運(yùn)行jar包的鏡像(這里只給思路,不給具體示例)

> Dockerfile如:

FROM justrydeng/jdk8
MAINTAINER dengshuai<13548417409@163.com>
RUN mkdir /jarAppDir/
CMD ["nohup","java","-jar","/jarAppDir/app.jar","&"]

> 生成鏡像docker build -t justrydeng/common-run-jar . -f jarDockerfile

注: -f 可以指定Dockerfile文件的文件名。

> 在后面使用時(shí),我們可以使用同一個(gè)鏡像來(lái)制作對(duì)應(yīng)不同端口(不同服務(wù))的容器

docker run -p 宿主機(jī)端口:要映射的容器端口 --name 容器名 -d justrydeng/common-run-jar

> 在更新jar包時(shí),需要在把xxx.jar包復(fù)制進(jìn)容器時(shí),統(tǒng)一重命名為app.jar

docker cp 宿主機(jī)jar包 容器名(或容器ID):/jarAppDir/app.jar

說(shuō)明:此方式的優(yōu)勢(shì)在于:每次如果要更新jar包,只需要先將容器stop,然后直接替換容器里面的jar包,最后再將該容器start即可。無(wú)需每次都創(chuàng)建新的鏡像,創(chuàng)建新的容器。

拓展二

解決Docker部署微服務(wù)時(shí),服務(wù)之間不能調(diào)用的問(wèn)題(示例)

調(diào)用服務(wù)出錯(cuò)時(shí)的Eureka:

如圖所示:

eureka找服務(wù)時(shí),會(huì)根據(jù)服務(wù)名【efficiency-taskrelease-service】,找到對(duì)應(yīng)的要訪(fǎng)問(wèn)的地址【6129d46c643e:2050】;一般的,如果我們?cè)谖⒎?wù)中只配了:

的話(huà),那么這個(gè)服務(wù)注冊(cè)到eureka中的就可能是【主機(jī)名:服務(wù)應(yīng)用名稱(chēng):服務(wù)端口號(hào)】。

如果主機(jī)名是localhost的話(huà),那可能影響不大;

但是如果主機(jī)名是其他的什么的話(huà)(如:6129d46c643e),那么就可能造成java.net.UnknownHostException: 6129d46c643e異常,將微服務(wù)放在Docker容器中進(jìn)行服務(wù)注冊(cè)時(shí)可能會(huì)出問(wèn)題,微服務(wù)會(huì)將Docker容器的主機(jī)名(而不是宿主機(jī)的主機(jī)名)注冊(cè)到eureka上,這時(shí)我們可以通過(guò)配置,來(lái)指定使用宿主機(jī)的ip,如:

注:此時(shí),可以不需要指定server.port了,因?yàn)槲覀円呀?jīng)在eureka.instance.instance-id中指明了;但spring.application.name還是需要指明的。

配置完成后,再重啟服務(wù),再次查看eureka,可看見(jiàn):

此時(shí),微服務(wù)集成Docker時(shí),各個(gè)服務(wù)不能調(diào)用的問(wèn)題就得到了解決!

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 詳解如何用docker安裝laravel開(kāi)發(fā)環(huán)境

    詳解如何用docker安裝laravel開(kāi)發(fā)環(huán)境

    本篇文章主要介紹了詳解如何用docker安裝laravel開(kāi)發(fā)環(huán)境,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-02-02
  • Docker部署Java應(yīng)用程序的實(shí)現(xiàn)步驟

    Docker部署Java應(yīng)用程序的實(shí)現(xiàn)步驟

    本文主要介紹了Docker部署Java應(yīng)用程序的實(shí)現(xiàn)步驟,通過(guò)將Java應(yīng)用程序打包成一個(gè)Docker鏡像,可以實(shí)現(xiàn)快速部署、資源隔離和靈活擴(kuò)展,感興趣的可以了解一下
    2024-03-03
  • Docker?search命令的使用方法

    Docker?search命令的使用方法

    本文主要介紹了Docker?search命令的使用方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-07-07
  • Docker實(shí)現(xiàn)容器化的分布式鎖服務(wù)RedisLock的快速搭建

    Docker實(shí)現(xiàn)容器化的分布式鎖服務(wù)RedisLock的快速搭建

    本文主要介紹了Docker實(shí)現(xiàn)容器化的分布式鎖服務(wù)RedisLock的快速搭建,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2026-04-04
  • Docker訪(fǎng)問(wèn)容器中的Spring Boot日志的幾種方法

    Docker訪(fǎng)問(wèn)容器中的Spring Boot日志的幾種方法

    在本文中,我們將演示如何在Docker容器中訪(fǎng)問(wèn)Spring Boot日志,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2026-04-04
  • docker build上下文的實(shí)現(xiàn)示例

    docker build上下文的實(shí)現(xiàn)示例

    Docker build上下文是構(gòu)建Docker鏡像時(shí)傳遞給Docker引擎的所有文件和目錄的集合,可以提高構(gòu)建效率,避免無(wú)用文件的傳輸,同時(shí)確保鏡像構(gòu)建過(guò)程的順利進(jìn)行,感興趣的可以了解一下
    2025-09-09
  • Docker如何解決tomcat容器啟動(dòng)成功,無(wú)法訪(fǎng)問(wèn)的問(wèn)題

    Docker如何解決tomcat容器啟動(dòng)成功,無(wú)法訪(fǎng)問(wèn)的問(wèn)題

    這篇文章主要介紹了Docker如何解決tomcat容器啟動(dòng)成功,無(wú)法訪(fǎng)問(wèn)的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • Docker中安裝Redis并開(kāi)啟遠(yuǎn)程訪(fǎng)問(wèn)的詳細(xì)步驟

    Docker中安裝Redis并開(kāi)啟遠(yuǎn)程訪(fǎng)問(wèn)的詳細(xì)步驟

    這篇文章主要介紹了Docker中安裝Redis并開(kāi)啟遠(yuǎn)程訪(fǎng)問(wèn)的詳細(xì)步驟,文中有詳細(xì)的代碼示例供大家參考,對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2025-01-01
  • Dockerfile中的copy命令使用

    Dockerfile中的copy命令使用

    在使用Dockerfile中的copy命令時(shí),如果使用相對(duì)路徑并且文件不在當(dāng)前目錄下,會(huì)導(dǎo)致構(gòu)建失敗,需要使用絕對(duì)路徑或者將文件移動(dòng)到Dockerfile所在的目錄下
    2025-02-02
  • 如何使用docker+frp進(jìn)行內(nèi)網(wǎng)穿透

    如何使用docker+frp進(jìn)行內(nèi)網(wǎng)穿透

    這篇文章主要介紹了使用docker+frp進(jìn)行內(nèi)網(wǎng)穿透,在公網(wǎng)上的ubuntu系統(tǒng)需要配置相關(guān)操作,本文給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2024-04-04

最新評(píng)論

韶关市| 滨州市| 清苑县| 望江县| 谷城县| 武夷山市| 星座| 南康市| 望奎县| 星子县| 东丰县| 连城县| 深州市| 丹阳市| 广饶县| 阜平县| 湄潭县| 德州市| 平湖市| 文登市| 垫江县| 阳西县| 崇义县| 太仆寺旗| 赞皇县| 清水县| 靖边县| 阿坝县| 石首市| 龙岩市| 元阳县| 福清市| 女性| 靖边县| 朔州市| 青州市| 南充市| 濉溪县| 建始县| 呼伦贝尔市| 毕节市|