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

Docker容器部署Java項目的自動化腳本

 更新時間:2025年04月03日 09:09:41   作者:岫珩  
這篇文章主要為大家詳細介紹了Docker容器中部署Java項目的自動化腳本編寫,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下

1. 服務部署過程

先將Java項目在docker中部署的過程中所有命令列舉

命令均在jar包同級目錄下進行執(zhí)行

1.1 移除舊jar包

正常應該會在更新時覆蓋,但還是執(zhí)行以下刪除操作

rm -f app.jar

1.2 jar包更新

通過oss工具命令線上更新或者ftp工具上傳更新

這里使用oss工具(使用ftp工具上傳可省略這一步更新操作)

ossutil64 cp oss://sb-dev/sb_back/app.jar app.jar

1.3 停止舊容器

先停止原來的容器

docker stop sb_back

1.4 刪除舊容器

刪除原來的容器

docker rm sb_back

1.5 刪除舊鏡像

檢索并刪除原來的鏡像

docker rmi sb_back:20250327

1.6 構建新鏡像

構建新的鏡像

docker build -t sb_back:20250327 .

參數描述

  • build 構建命令
  • -t 打標簽,TAG的縮寫
  • sb_back:20250327 鏡像名稱和TAG
  • . 當前目錄下

1.7 運行新容器

運行新的容器,自定義名稱,指定端口映射

docker run --name sb_back -p 3006:8089 -d --restart=always sb_back:20250326

參數描述

  • run 運行容器命令
  • –name 定義容器名稱,這里定為sb_back
  • -p 映射端口,將Java服務端口即容器端口映射到本機服務器向外暴露的端口(即后續(xù)訪問該服務的真實端口)
  • -d 后臺運行
  • –restart=always 容器運行失敗會自動重啟
  • sb_back:$DATE 鏡像及TAG(使用指定鏡像來運行容器)

2. 創(chuàng)建shell腳本文件

可以在本地創(chuàng)建后上傳到服務器或者在服務器jar包同級目錄創(chuàng)建

2.1 本地創(chuàng)建并上傳到服務器

先在本地編輯(VSCode等編輯器創(chuàng)建一個sb_back.sh文件),將腳本內容粘貼進來并保存

使用FTP工具或者oss工具上傳

ossutil64 cp oss://sb-dev/sb_back/sb_back.sh sb_back.sh

注意,由于Windows和Linux換行符不同,腳本上傳后執(zhí)行可能會報錯,可參考4.3進行解決

2.2 服務器中創(chuàng)建sh文件

在jar包同級目錄下創(chuàng)建名為sb_back.sh的文件

mkdir sb_back.sh

編輯文件

vim sb_back.sh

將腳本內容粘貼進來即可

(i開啟輸入模式,esc推出輸出模式,:wq保存并退出)

3. 腳本內容

將以上名命令整合到一起就是腳本執(zhí)行的命令,完整內容如下

3.1 簡易腳本

停止容器、移除原有容器和鏡像,構建鏡像并部署容器的腳本命令

#!/bin/bash
# 1. 停止并刪除舊容器
echo "Stopping and removing old container..."
docker stop sb_back || true
docker rm sb_back || true
# 2. 刪除舊鏡像(可選,強制重新構建時使用)
echo "Removing old image..."
docker rmi $IMAGE_NAME || true
# 3. 構建新鏡像
echo "Building new image..."
docker build -t $IMAGE_NAME $DOCKERFILE_PATH
docker build -t sb_back:20250327 .
# 4. 運行新容器
echo "Starting new container..."
docker run -d --name sb_back -p 3006:8089 --restart=always sb_back:20250327
echo "Deployment completed!"

注:|| true 用于忽略未找到容器的錯誤

3.2 升級腳本

移除jar包,上傳jar包,停止容器、移除容器和鏡像、構建鏡像和運行容器等命令整合

并且將容器名鏡像名等以變量的形式傳入

其中以時間變量作為鏡像TAG

#!/bin/bash
# 定義當前日期,后續(xù)使用日期作為鏡像TAG版本
DATE=$(date +%Y%m%d)
# 定義當前時間
CURRENT_TIME=`date +'%Y%m%d_%H%M%S'`
# 或者
# CURRENT_TIME=(date +%Y%m%d_%H%M%S)

# 輸出當前時間內容
echo "DATE = "$DATE
echo "CURRENT_TIME = "$CURRENT_TIME

# 0. 移除舊jar包,放入新的jar包
echo "Removing jar and copy new jar..."
rm -f app.jar
ossutil64 cp oss://dev/3_JWH/01_SB_BACK/app.jar app.jar

# 部署配置(根據實際情況修改)
CONTAINER_NAME="sb_back"  # Docker容器名稱
IMAGE_TAG=$DATE
IMAGE_NAME=$CONTAINER_NAME:$IMAGE_TAG      # Docker鏡像名稱
# JAR_PATH="./target/*.jar"       # 生成的Jar包路徑
DOCKERFILE_PATH="."             # Dockerfile所在目錄,jar包和dockerfile文件在同一位置
PORT_MAPPING="3006:8089"        # 端口映射, Java服務端口8089映射到本機服務器3006,外部訪問時訪問的就是3006端口

# 1. 停止并刪除舊容器
echo "Stopping and removing old container..."
docker stop $CONTAINER_NAME || true
docker rm $CONTAINER_NAME || true

# 2. 刪除舊鏡像(可選,強制重新構建時使用)
echo "Removing old image..."
docker rmi $IMAGE_NAME || true

# 3. 構建新鏡像
echo "Building new image..."
docker build -t $IMAGE_NAME $DOCKERFILE_PATH

# 4. 運行新容器
echo "Starting new container..."
docker run -d \
  --name $CONTAINER_NAME \
  -p $PORT_MAPPING \
  --restart=always \
  $IMAGE_NAME

echo "Deployment completed!"

4. 執(zhí)行腳本

4.1 檢查腳本

執(zhí)行前可先檢查以下腳本內容

cat sb_back.sh

4.2 執(zhí)行腳本

在腳本所在目錄,執(zhí)行命令

sh sb_back.sh

注意:由于Windows中的換行符和Linux環(huán)境中的有所不同,可能會導致sh腳本執(zhí)行報錯,如報錯可參考下一步解決

執(zhí)行截圖

4.3 報錯處理

如果報錯可先執(zhí)行以下命令將替換Windows中的換行符為Linux的換行符

sed -i 's/\r$//' your_script.sh

更多解決方案參考文章:Docker構建鏡像運行容器腳本出現換行符問題的解決

5. 查看鏡像

執(zhí)行腳本后,使用命令查看鏡像是否更新

docker images

6. 查看容器

查看容器是否已經創(chuàng)建并運行

查看正在運行的容器

docker ps

以上就是Docker容器部署Java項目的自動化腳本的詳細內容,更多關于Docker部署Java項目的資料請關注腳本之家其它相關文章!

相關文章

  • docker-compose安裝Jenkins的實踐筆記

    docker-compose安裝Jenkins的實踐筆記

    jenkins是一個比較強大的自動構建工具, Jenkins是開源CI&CD軟件領導者,提供超過1000個插件來支持構建、部署、自動化,本文給大家介紹docker-compose安裝Jenkins的實踐筆記,感興趣的朋友一起看看吧
    2021-09-09
  • docker安裝redis 5.0.7并掛載外部配置和數據問題

    docker安裝redis 5.0.7并掛載外部配置和數據問題

    Redis 是一個開源的使用 ANSI C 語言編寫、支持網絡、可基于內存亦可持久化的日志型、Key-Value 的 NoSQL 數據庫,并提供多種語言的 API。這篇文章主要介紹了docker安裝redis 5.0.7并掛載外部配置和數據,需要的朋友可以參考下
    2019-12-12
  • 關于Docker網絡配置及部署SpringCloud項目詳解

    關于Docker網絡配置及部署SpringCloud項目詳解

    這篇文章主要介紹了關于Docker網絡配置及部署SpringCloud項目詳解,Docker在創(chuàng)建容器時有四種網絡模式,bridge為默認不需要去指定,其他三種模式需要在創(chuàng)建容器時使用–net去指定,需要的朋友可以參考下
    2023-07-07
  • Docker數據目錄遷移方法詳解

    Docker數據目錄遷移方法詳解

    這篇文章主要介紹了Docker數據目錄遷移方法,Docker數據目錄遷移成功后再也不用擔心服務器系統(tǒng)盤目錄被占滿的情況的,本文給大家介紹的非常詳細,需要的朋友可以參考下
    2023-05-05
  • Docker安裝部署單機版Rocket及基礎講解

    Docker安裝部署單機版Rocket及基礎講解

    RocketMQ是阿里巴巴旗下一款開源的MQ框架,經歷過雙十一考研、Java編程語言實現,有非常好完整生態(tài)系統(tǒng),這篇文章主要介紹了用Docker部署安裝單機版Rocket及基礎講解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值
    2022-07-07
  • 從入門到實戰(zhàn)全面解析Docker鏡像常用命令

    從入門到實戰(zhàn)全面解析Docker鏡像常用命令

    Docker 作為容器化技術的標桿工具,其鏡像管理能力是實現高效 CI/CD 流程的核心,本文將為大家?guī)鞤ocker 鏡像常用命令的全方位解析,希望對大家有所幫助
    2025-11-11
  • 詳解docker中使用systemctl啟動服務報錯的解決辦法

    詳解docker中使用systemctl啟動服務報錯的解決辦法

    這篇文章主要介紹了詳解docker中使用systemctl啟動服務報錯的解決辦法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-08-08
  • 使用Docker安裝Jenkins的示例代碼

    使用Docker安裝Jenkins的示例代碼

    這篇文章主要介紹了使用Docker安裝Jenkins的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-03-03
  • Docker 與 Kubernetes 部署最佳實踐指南

    Docker 與 Kubernetes 部署最佳實踐指南

    本文介紹了Docker與Kubernetes部署的最佳實踐,涵蓋Dockerfile優(yōu)化、鏡像管理、容器運行、Kubernetes部署配置、服務配置、配置管理、存儲管理、網絡配置、CI/CD集成、監(jiān)控與日志、安全最佳實踐、性能優(yōu)化、實際應用場景及未來發(fā)展趨勢
    2026-04-04
  • Docker超詳細講解鏡像操作

    Docker超詳細講解鏡像操作

    鏡像也是?docker?的核心組件之一,鏡像時容器運行的基礎,容器是鏡像運行后的形態(tài)。本文主要介紹Docker鏡像的基本操作,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-08-08

最新評論

桃江县| 乐都县| 南召县| 德安县| 武陟县| 射洪县| 卢龙县| 绍兴县| 都昌县| 宜兰市| 商南县| 宜阳县| 荥阳市| 台前县| 咸阳市| 石城县| 平乡县| 榆林市| 洪泽县| 西充县| 馆陶县| 利津县| 邻水| 印江| 伊川县| 蓝田县| 通榆县| 辰溪县| 安泽县| 沈丘县| 清原| 威远县| 额敏县| 惠东县| 龙岩市| 茌平县| 如皋市| 厦门市| 寿光市| 宣恩县| 酒泉市|