目錄
工程目錄
dockerfile檔案
檔案部署
產生映像
啟動容器
存取web
jar套件映射部署部署
腳本部署
查看docker日誌
問題描述: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.
首頁 Java java教程 docker怎麼部署SpringBoot及替換jar包

docker怎麼部署SpringBoot及替換jar包

May 12, 2023 pm 02:16 PM
docker jar springboot

工程目錄

docker怎麼部署SpringBoot及替換jar包

dockerfile檔案

建立dockerfile文件,後面會用到。

檔案部署

在伺服器新建/data/docker/hellolearn資料夾(檔案路徑可自訂),將maven打包好的jar包和上文中建立的dockerfile檔案複製到伺服器新建的資料夾(/data/docker/hellolearn)。

docker怎麼部署SpringBoot及替換jar包

產生映像

docker build -t hellolearn .

docker build -t 映像名稱:標籤dockerfile的相對位置,點號代表目前目錄,不寫tag預設是latest。

docker怎麼部署SpringBoot及替換jar包

啟動容器

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

docker start hellolearn

-d參數是讓容器後台運作;--name為指定容器的名稱;-p 是做連接埠映射,此時將伺服器中的8301(冒號前的連接埠)連接埠映射到容器中的8301(冒號後的連接埠)連接埠(application.properties配置的是8301)

存取web

docker怎麼部署SpringBoot及替換jar包

jar套件映射部署部署

依照上文的步驟已足可以輕鬆應付docker部署springboot的全流程。但這樣在啟動容器後,每次需更新jar包時,都得重新製作鏡像,再重新製作容器。製程及其繁瑣,效率極低。那如何在不更新鏡像或容器的前提下直接更新jar包完成部署呢?

5.1 更新dockerfile

最後一行 entrypoint ["java","-jar","/data/learn-web-0.0.1-snapshot.jar"] 會執行容器裡/data目錄下的learn-web-0.0.1-snapshot.jar檔。

5.2 使用docker build指令建立映像

docker build -t hellolearn .

5.3 建立&啟動容器

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

#-v 宿主機目錄關聯容器目錄。這樣宿主機的/data/docker/newhellolearn/package目錄就與docker的/data目錄進行對應。

這樣的話,當jar包發生變動時,直接更新宿主機的/data/docker/newhellolearn/package目錄下的jar包即可,更新jar包之後需要將容器重新啟動。

腳本部署

透過ja​​r包部署方式造成一個問題,若jar包名字發生變化,例如版本號變化(learn-web-0.0.1-snapshot.jar--> >learn-web-1.0.1-snapshot.jar)。需要怎麼處理呢?以下就介紹第三種透過腳本部署的方式。

6.1 建立hellolearn.sh檔案

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

將hellolearn. sh上傳到/data/docker/hellolearn/scriptdeploy/package,這個資料夾路徑可以自訂,記住這個資料夾路徑,後面還會用到。

6.2 新增腳本執行權限

chmod x hellolearn.sh

6.3 建立dockerfile

cmd ["sh ","-c","/data/hellolearn.sh"] 表示在容器啟動時啟動6.1中建立的hellolearn.sh腳本。

注意最後一條指令上文中都是entrypoint,在腳本部署中改成了cmd,至於entrypoint和cmd的具體區別感興趣的可以了解一下。

6.4 上傳jar套件

將jar套件放入hellolearn.sh的同一個資料夾目錄,即/data/docker/hellolearn/scriptdeploy/package,建立容器時再將該目錄(宿主機目錄)與容器的/data目錄進行對應。 。

6.5 檔案目錄結構圖

docker怎麼部署SpringBoot及替換jar包

這裡的目錄結構不知道大家暈不暈,上傳一張我這宿主機的目錄結構圖,一目了然。

6.6 建立映像

docker build -t hellolearn-script .

末尾的點號代表目前目錄,所以產生映像的指令需要在dockerfile所在的目錄執行。

6.7 建立&啟動容器

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

docker start hellolearn-script

##

將宿主機的/data/docker/hellolearn/scriptdeploy/package目錄與容器的/data目錄對映關聯。這樣的話,當jar包發生變動時,直接更新宿主機目錄下的jar包即可。即使jar包名字發生變化,也需要再更新hellolearn.sh腳本。更新之後重啟容器。

6.8 web測試效果

docker怎麼部署SpringBoot及替換jar包

查看docker日誌

docker logs [options] container id

options說明:

-f : 追蹤日誌輸出
--since :顯示某個開始時間的所有日誌
-t : 顯示時間戳
-- tail :僅列出最新n條容器日誌

7.1 檢視指定時間後的日誌,只顯示最後100行:

##docker logs -f -t -- since="2020-10-01" --tail=100 container id

7.2 查個指定時間區段的日誌

##docker logs -t --since ="2020-10-01t19:00:00" --until "2020-10-01t19:00:00" container id

#7.3 檢視指定時間後面的日誌:

#docker logs -t --since="2020-10-01t19:00:00" container id

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

#docker logs --since 5m container id

7.5 透過exec 指令對指定的容器執行bash:

docker exec hellolearn -it /bin/bash 

#或 docker exec -it hellolearn bash7.6 查看docker ip

docker inspect --format='{{.networksettings.ipaddress}}' heldressearn

遇到的問題

問題描述: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

以上是docker怎麼部署SpringBoot及替換jar包的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

docker怎麼退出容器 docker怎麼退出容器 Apr 15, 2025 pm 12:15 PM

退出 Docker 容器的四種方法:容器終端中使用 Ctrl D 快捷鍵容器終端中輸入 exit 命令宿主機終端中使用 docker stop <container_name> 命令宿主機終端中使用 docker kill <container_name> 命令(強制退出)

docker容器名稱怎麼查 docker容器名稱怎麼查 Apr 15, 2025 pm 12:21 PM

可以通過以下步驟查詢 Docker 容器名稱:列出所有容器(docker ps)。篩選容器列表(使用 grep 命令)。獲取容器名稱(位於 "NAMES" 列中)。

docker內的文件怎麼拷貝到外面 docker內的文件怎麼拷貝到外面 Apr 15, 2025 pm 12:12 PM

Docker 中將文件拷貝到外部主機的方法:使用 docker cp 命令:執行 docker cp [選項] <容器路徑> <主機路徑>。使用數據卷:在主機上創建目錄,在創建容器時使用 -v 參數掛載該目錄到容器內,實現文件雙向同步。

docker怎麼重啟 docker怎麼重啟 Apr 15, 2025 pm 12:06 PM

重啟 Docker 容器的方法:獲取容器 ID(docker ps);停止容器(docker stop <container_id>);啟動容器(docker start <container_id>);驗證重啟成功(docker ps)。其他方法:Docker Compose(docker-compose restart)或 Docker API(參考 Docker 文檔)。

docker怎麼啟動mysql docker怎麼啟動mysql Apr 15, 2025 pm 12:09 PM

在 Docker 中啟動 MySQL 的過程包含以下步驟:拉取 MySQL 鏡像創建並啟動容器,設置根用戶密碼並映射端口驗證連接創建數據庫和用戶授予對數據庫的所有權限

docker怎麼更新鏡像 docker怎麼更新鏡像 Apr 15, 2025 pm 12:03 PM

更新 Docker 鏡像的步驟如下:拉取最新鏡像標記新鏡像為特定標籤刪除舊鏡像(可選)重新啟動容器(如果需要)

docker怎麼啟動容器 docker怎麼啟動容器 Apr 15, 2025 pm 12:27 PM

Docker 容器啟動步驟:拉取容器鏡像:運行 "docker pull [鏡像名稱]"。創建容器:使用 "docker create [選項] [鏡像名稱] [命令和參數]"。啟動容器:執行 "docker start [容器名稱或 ID]"。檢查容器狀態:通過 "docker ps" 驗證容器是否正在運行。

docker怎麼創建容器 docker怎麼創建容器 Apr 15, 2025 pm 12:18 PM

在 Docker 中創建容器: 1. 拉取鏡像: docker pull [鏡像名] 2. 創建容器: docker run [選項] [鏡像名] [命令] 3. 啟動容器: docker start [容器名]

See all articles