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

詳解docker部署SpringBoot及替換jar包的方法

 更新時(shí)間:2020年11月30日 10:20:36   作者:請(qǐng)叫我頭頭哥  
這篇文章主要介紹了詳解docker部署SpringBoot及替換jar包的方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

關(guān)于docker的安裝和使用,可以看看之前這兩篇文章。docker kubernetes dashboard安裝部署詳細(xì)介紹Docker如何使用link建立容器之間的連接。這篇文章主要介紹如何在docker上部署springboot項(xiàng)目。關(guān)于如何創(chuàng)建springboot項(xiàng)目可以看看這篇文章IDEA上面搭建一個(gè)SpringBoot的web-mvc項(xiàng)目遇到的問題

本文主要介紹docker部署springboot的三種方式,分別是:入門方式、jar包替換部署的方式和腳本部署方式,一步步來手把手教程。注意這三種方式的命名是我自創(chuàng)非官方的。

工程目錄

Dockerfile文件

創(chuàng)建Dockerfile文件,后面會(huì)用到。

# Docker image for springboot file run
# VERSION 0.0.1
# Author: toutou
# 基礎(chǔ)鏡像使用java
FROM java:8
# VOLUME 指定了臨時(shí)文件目錄為/tmp。
# 其效果是在主機(jī) /var/lib/docker 目錄下創(chuàng)建了一個(gè)臨時(shí)文件,并鏈接到容器的/tmp
# VOLUME /tmp
# 將jar包添加到容器中并更名為app.jar
ADD learn-web-0.0.1-SNAPSHOT.jar app.jar
# 運(yùn)行jar包
RUN bash -c 'touch /app.jar'
ENTRYPOINT ["java","-jar","/app.jar"]
###聲明啟動(dòng)端口號(hào)
#EXPOSE 8301

文件部署

在服務(wù)器新建/data/docker/hellolearn文件夾(文件路徑可自定義),將maven打包好的jar包和上文中創(chuàng)建的Dockerfile文件復(fù)制到服務(wù)器新建的文件夾(/data/docker/hellolearn)。

生成鏡像

docker build -t hellolearn .

docker build -t 鏡像名稱:標(biāo)簽 Dockerfile的相對(duì)位置,點(diǎn)號(hào)代表當(dāng)前目錄,不寫tag默認(rèn)是latest。

啟動(dòng)容器

docker run -d -p 8301:8301 --name hellolearn hellolearn

docker start hellolearn

-d參數(shù)是讓容器后臺(tái)運(yùn)行;--name為指定容器的名稱;-p 是做端口映射,此時(shí)將服務(wù)器中的8301(冒號(hào)前的端口)端口映射到容器中的8301(冒號(hào)后的端口)端口(application.properties配置的是8301)

訪問WEB

jar包映射部署

按照上文的步驟已足可以輕松應(yīng)對(duì)docker部署springboot的全流程。但是這樣在啟動(dòng)容器后,每次需更新jar包時(shí),都得重新制作鏡像,再重新制作容器。流程及其繁瑣,效率極低。那如何在不更新鏡像或者容器的前提下直接更新jar包完成部署呢?

5.1 更新Dockerfile

# Docker image for springboot file run
# VERSION 0.0.1
# Author: toutou
# 基礎(chǔ)鏡像使用java
FROM java:8
EXPOSE 8301
ENTRYPOINT ["java","-jar","/data/learn-web-0.0.1-SNAPSHOT.jar"]

最后一行 ENTRYPOINT ["java","-jar","/data/learn-web-0.0.1-SNAPSHOT.jar"] 會(huì)運(yùn)行容器里/data目錄下的learn-web-0.0.1-SNAPSHOT.jar文件。

5.2 使用docker build命令構(gòu)建鏡像

docker build -t hellolearn .

5.3 創(chuàng)建&啟動(dòng)容器

docker run --name hellolearn -it -v /data/docker/newhellolearn/package:/data -d -p 8301:8301 hellolearn

-v 宿主機(jī)目錄關(guān)聯(lián)容器目錄。這樣宿主機(jī)的/data/docker/newhellolearn/package目錄就與docker的/data目錄進(jìn)行映射。

這樣的話,當(dāng)jar包發(fā)生變動(dòng)時(shí),直接更新宿主機(jī)的/data/docker/newhellolearn/package目錄下的jar包即可,更新jar包之后需要將容器重啟一下。

腳本部署

通過jar包部署方式引起一個(gè)問題,若jar包名字發(fā)生變化,比如版本號(hào)變化(learn-web-0.0.1-SNAPSHOT.jar-->>learn-web-1.0.1-SNAPSHOT.jar)。需要怎么處理呢?下面就介紹第三種通過腳本部署的方式。

6.1 創(chuàng)建hellolearn.sh文件

java -jar /data/learn-web-0.0.1-SNAPSHOT.jar

將hellolearn.sh上傳到/data/docker/hellolearn/scriptdeploy/package,這個(gè)文件夾路徑可以自定義,記住這個(gè)文件夾路徑,后面還會(huì)用到。

6.2 添加腳本執(zhí)行權(quán)限

chmod +x hellolearn.sh

6.3 創(chuàng)建Dockerfile

# Docker image for springboot file run
# VERSION 0.0.1
# Author: toutou
# 基礎(chǔ)鏡像使用java
FROM java:8
EXPOSE 8301
CMD ["sh","-c","/data/hellolearn.sh"]

CMD ["sh","-c","/data/hellolearn.sh"] 表示在容器啟動(dòng)時(shí)啟動(dòng)6.1中創(chuàng)建的hellolearn.sh腳本。

注意最后一條命令上文中都是ENTRYPOINT,在腳本部署中改成了CMD,至于ENTRYPOINT和CMD的具體區(qū)別感興趣的可以了解一下。

6.4 上傳jar包

將jar包放入hellolearn.sh的同一個(gè)文件夾目錄,即/data/docker/hellolearn/scriptdeploy/package,創(chuàng)建容器時(shí)再將該目錄(宿主機(jī)目錄)與容器的/data目錄進(jìn)行映射。。

6.5 文件目錄結(jié)構(gòu)圖

這里的目錄結(jié)構(gòu)不知道大家暈不暈,上傳一張我這宿主機(jī)的目錄結(jié)構(gòu)圖,一目了然。

6.6 創(chuàng)建鏡像

docker build -t hellolearn-script .

末尾的點(diǎn)號(hào)代表當(dāng)前目錄,所以生成鏡像的命令需要在Dockerfile所在的目錄執(zhí)行。

6.7 創(chuàng)建&啟動(dòng)容器

docker run --name hellolearn-script -it -v /data/docker/hellolearn/scriptdeploy/package:/data -d -p 8302:8301 hellolearn-script

docker start hellolearn-script

將宿主機(jī)的/data/docker/hellolearn/scriptdeploy/package目錄與容器的/data目錄映射關(guān)聯(lián)。這樣的話,當(dāng)jar包發(fā)生變動(dòng)時(shí),直接更新宿主機(jī)目錄下的jar包即可。即使jar包名字發(fā)生變化,也需要再更新一下hellolearn.sh腳本。更新之后重啟容器。

6.8 web測(cè)試效果

查看docker日志

docker logs [OPTIONS] CONTAINER ID

OPTIONS說明:

-f : 跟蹤日志輸出
--since :顯示某個(gè)開始時(shí)間的所有日志
-t : 顯示時(shí)間戳
--tail :僅列出最新N條容器日志

7.1 查看指定時(shí)間后的日志,只顯示最后100行:

docker logs -f -t --since="2020-10-01" --tail=100 CONTAINER ID

7.2 查個(gè)指定時(shí)間區(qū)段的日志

docker logs -t --since="2020-10-01T19:00:00" --until "2020-10-01T19:00:00" CONTAINER ID

7.3 查看指定時(shí)間后面的日志:

docker logs -t --since="2020-10-01T19:00:00" CONTAINER ID

7.4 查看最近5分鐘的日志:

docker logs --since 5m CONTAINER ID

7.5 通過 exec 命令對(duì)指定的容器執(zhí)行 bash:

docker exec hellolearn -it /bin/bash 或者 docker exec -it hellolearn bash

7.6 查看docker IP

docker inspect --format='{{.NetworkSettings.IPAddress}}' hellolearn

遇到的問題

問題描述:Error response from daemon: driver failed programming external connectivity on endpoint flamboyant_leavitt (iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 8301 -j DNAT --to-destination 172.17.0.2:8301 ! -i docker0: iptables: No chain/target/match by that name.

解決方案:重啟docker。 systemctl restart docker

具體問題相關(guān)信息詳見Error response from daemon: driver failed programming external connectivity on endpoint mysql3308 (

源碼地址

https://github.com/toutouge/javademosecond/tree/master/hellolearn

到此這篇關(guān)于詳解docker部署SpringBoot及替換jar包的方法的文章就介紹到這了,更多相關(guān)docker部署SpringBoot及替換jar包內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Linux平臺(tái)搭建docker環(huán)境并簡單使用示例

    Linux平臺(tái)搭建docker環(huán)境并簡單使用示例

    這篇文章主要介紹了Linux平臺(tái)搭建docker環(huán)境及簡單使用方法,需要的朋友參考下吧
    2017-01-01
  • docker鏡像封裝方便打包上傳一鍵部署

    docker鏡像封裝方便打包上傳一鍵部署

    這篇文章主要為大家介紹了docker鏡像封裝方便打包上傳一鍵部署,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-11-11
  • docker安裝seafile企業(yè)云盤方式

    docker安裝seafile企業(yè)云盤方式

    本文詳細(xì)介紹了如何在Docker中安裝和配置Seafile,包括基礎(chǔ)安裝、生產(chǎn)環(huán)境配置、HTTPS設(shè)置、數(shù)據(jù)備份與恢復(fù)以及常見問題解決,通過這些步驟,您可以快速部署一個(gè)穩(wěn)定且安全的Seafile實(shí)例
    2025-02-02
  • docker保存和加載tar及其tar.gz方式

    docker保存和加載tar及其tar.gz方式

    這篇文章主要介紹了docker保存和加載tar及其tar.gz方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-04-04
  • docker鏡像消失的問題及臨時(shí)解決方案

    docker鏡像消失的問題及臨時(shí)解決方案

    本文主要介紹了docker鏡像消失的問題及臨時(shí)解決方案,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-05-05
  • Docker Runc容器生命周期詳細(xì)介紹

    Docker Runc容器生命周期詳細(xì)介紹

    這篇文章主要介紹了Docker Runc容器生命周期詳細(xì)介紹的相關(guān)資料,文章分析runc的容器生命周期的抽象、內(nèi)部實(shí)現(xiàn)以及狀態(tài)轉(zhuǎn)換圖。理解了runc的容器狀態(tài)轉(zhuǎn)換再對(duì)比理解docker client提供的容器操作命令的語義會(huì)更容易些
    2016-12-12
  • docker中容器數(shù)據(jù)卷volume介紹

    docker中容器數(shù)據(jù)卷volume介紹

    大家好,本篇文章主要講的是docker中容器數(shù)據(jù)卷volume介紹,感興趣的同學(xué)趕快來看一看吧,對(duì)你有幫助的話記得收藏一下,方便下次瀏覽
    2021-12-12
  • 基于Docker快速搭建ELK的方法

    基于Docker快速搭建ELK的方法

    這篇文章主要介紹了基于Docker快速搭建ELK的方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • Docker下部署lnmp詳細(xì)步驟

    Docker下部署lnmp詳細(xì)步驟

    大家好,本篇文章主要講的是Docker下部署lnmp詳細(xì)步驟,感興趣的同學(xué)趕快來看一看吧,對(duì)你有幫助的話記得收藏一下,方便下次瀏覽
    2021-12-12
  • Docker網(wǎng)段和內(nèi)網(wǎng)網(wǎng)段ip沖突導(dǎo)致無法訪問網(wǎng)絡(luò)的兩種解決方法

    Docker網(wǎng)段和內(nèi)網(wǎng)網(wǎng)段ip沖突導(dǎo)致無法訪問網(wǎng)絡(luò)的兩種解決方法

    本文主要介紹了Docker網(wǎng)段和內(nèi)網(wǎng)網(wǎng)段沖突導(dǎo)致無法訪問網(wǎng)絡(luò)的兩種解決方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06

最新評(píng)論

秭归县| 平果县| 海丰县| 华宁县| 霍州市| 安乡县| 龙口市| 松阳县| 纳雍县| 卢氏县| 谷城县| 肇东市| 定兴县| 铜梁县| 荣昌县| 泰兴市| 玉环县| 邻水| 赫章县| 虹口区| 财经| 夏津县| 天镇县| 永善县| 竹山县| 亚东县| 蓝山县| 巴彦淖尔市| 无极县| 大悟县| 曲松县| 宜兰县| 达日县| 洛宁县| 桓台县| 南部县| 金门县| 永春县| 工布江达县| 南昌市| 抚远县|