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

Docker容器部署Java項(xiàng)目的自動(dòng)化腳本

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

1. 服務(wù)部署過(guò)程

先將Java項(xiàng)目在docker中部署的過(guò)程中所有命令列舉

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

1.1 移除舊jar包

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

rm -f app.jar

1.2 jar包更新

通過(guò)oss工具命令線上更新或者ftp工具上傳更新

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

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

1.3 停止舊容器

先停止原來(lái)的容器

docker stop sb_back

1.4 刪除舊容器

刪除原來(lái)的容器

docker rm sb_back

1.5 刪除舊鏡像

檢索并刪除原來(lái)的鏡像

docker rmi sb_back:20250327

1.6 構(gòu)建新鏡像

構(gòu)建新的鏡像

docker build -t sb_back:20250327 .

參數(shù)描述

  • build 構(gòu)建命令
  • -t 打標(biāo)簽,TAG的縮寫(xiě)
  • sb_back:20250327 鏡像名稱(chēng)和TAG
  • . 當(dāng)前目錄下

1.7 運(yùn)行新容器

運(yùn)行新的容器,自定義名稱(chēng),指定端口映射

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

參數(shù)描述

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

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

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

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

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

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

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

注意,由于Windows和Linux換行符不同,腳本上傳后執(zhí)行可能會(huì)報(bào)錯(cuò),可參考4.3進(jìn)行解決

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

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

mkdir sb_back.sh

編輯文件

vim sb_back.sh

將腳本內(nèi)容粘貼進(jìn)來(lái)即可

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

3. 腳本內(nèi)容

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

3.1 簡(jiǎn)易腳本

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

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

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

3.2 升級(jí)腳本

移除jar包,上傳jar包,停止容器、移除容器和鏡像、構(gòu)建鏡像和運(yùn)行容器等命令整合

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

其中以時(shí)間變量作為鏡像TAG

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

# 輸出當(dāng)前時(shí)間內(nèi)容
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

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

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

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

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

# 4. 運(yùn)行新容器
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í)行前可先檢查以下腳本內(nèi)容

cat sb_back.sh

4.2 執(zhí)行腳本

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

sh sb_back.sh

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

執(zhí)行截圖

4.3 報(bào)錯(cuò)處理

如果報(bào)錯(cuò)可先執(zhí)行以下命令將替換Windows中的換行符為L(zhǎng)inux的換行符

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

更多解決方案參考文章:Docker構(gòu)建鏡像運(yùn)行容器腳本出現(xiàn)換行符問(wèn)題的解決

5. 查看鏡像

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

docker images

6. 查看容器

查看容器是否已經(jīng)創(chuàng)建并運(yùn)行

查看正在運(yùn)行的容器

docker ps

以上就是Docker容器部署Java項(xiàng)目的自動(dòng)化腳本的詳細(xì)內(nèi)容,更多關(guān)于Docker部署Java項(xiàng)目的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • docker-compose安裝Jenkins的實(shí)踐筆記

    docker-compose安裝Jenkins的實(shí)踐筆記

    jenkins是一個(gè)比較強(qiáng)大的自動(dòng)構(gòu)建工具, Jenkins是開(kāi)源CI&CD軟件領(lǐng)導(dǎo)者,提供超過(guò)1000個(gè)插件來(lái)支持構(gòu)建、部署、自動(dòng)化,本文給大家介紹docker-compose安裝Jenkins的實(shí)踐筆記,感興趣的朋友一起看看吧
    2021-09-09
  • docker安裝redis 5.0.7并掛載外部配置和數(shù)據(jù)問(wèn)題

    docker安裝redis 5.0.7并掛載外部配置和數(shù)據(jù)問(wèn)題

    Redis 是一個(gè)開(kāi)源的使用 ANSI C 語(yǔ)言編寫(xiě)、支持網(wǎng)絡(luò)、可基于內(nèi)存亦可持久化的日志型、Key-Value 的 NoSQL 數(shù)據(jù)庫(kù),并提供多種語(yǔ)言的 API。這篇文章主要介紹了docker安裝redis 5.0.7并掛載外部配置和數(shù)據(jù),需要的朋友可以參考下
    2019-12-12
  • 關(guān)于Docker網(wǎng)絡(luò)配置及部署SpringCloud項(xiàng)目詳解

    關(guān)于Docker網(wǎng)絡(luò)配置及部署SpringCloud項(xiàng)目詳解

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

    Docker數(shù)據(jù)目錄遷移方法詳解

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

    Docker安裝部署單機(jī)版Rocket及基礎(chǔ)講解

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

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

    Docker 作為容器化技術(shù)的標(biāo)桿工具,其鏡像管理能力是實(shí)現(xiàn)高效 CI/CD 流程的核心,本文將為大家?guī)?lái)Docker 鏡像常用命令的全方位解析,希望對(duì)大家有所幫助
    2025-11-11
  • 詳解docker中使用systemctl啟動(dòng)服務(wù)報(bào)錯(cuò)的解決辦法

    詳解docker中使用systemctl啟動(dòng)服務(wù)報(bào)錯(cuò)的解決辦法

    這篇文章主要介紹了詳解docker中使用systemctl啟動(dòng)服務(wù)報(bào)錯(cuò)的解決辦法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • 使用Docker安裝Jenkins的示例代碼

    使用Docker安裝Jenkins的示例代碼

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

    Docker 與 Kubernetes 部署最佳實(shí)踐指南

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

    Docker超詳細(xì)講解鏡像操作

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

最新評(píng)論

景德镇市| 清涧县| 元氏县| 新巴尔虎左旗| 通海县| 大安市| 阳泉市| 临沧市| 灵璧县| 泰和县| 从化市| 明溪县| 长沙市| 新乡市| 潜江市| 郎溪县| 海伦市| 霍邱县| 兴安盟| 兴隆县| 汽车| 玉门市| 广安市| 鹤山市| 平阳县| 阜平县| 武汉市| 唐山市| 衡山县| 延寿县| 饶阳县| 峨山| 赣榆县| 湘潭市| 宽甸| 宁津县| 崇明县| 桐柏县| 来凤县| 舟曲县| 石柱|