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

使用Shell腳本實(shí)現(xiàn)SpringBoot項(xiàng)目自動(dòng)化部署到Docker的操作指南

 更新時(shí)間:2025年05月30日 10:00:17   作者:LOVE_DDZ  
在日常項(xiàng)目開發(fā)中,我們經(jīng)常會(huì)將SpringBoot項(xiàng)目打包并部署到服務(wù)器上的Docker環(huán)境中,為了提升效率、減少重復(fù)操作,我們可以通過(guò)Shell腳本實(shí)現(xiàn)自動(dòng)化部署,所以本文給大家介紹了使用Shell腳本實(shí)現(xiàn)SpringBoot項(xiàng)目自動(dòng)化部署到Docker的操作指南,需要的朋友可以參考下

一、準(zhǔn)備環(huán)境

1. 本地和服務(wù)器要求

  • 本地安裝了 Maven 和 JDK
  • 服務(wù)器操作系統(tǒng)為 Ubuntu 22.04 LTS
  • 服務(wù)器已安裝 Docker,并已配置當(dāng)前用戶對(duì) Docker 的權(quán)限(加入 docker 用戶組)

2. 本地項(xiàng)目結(jié)構(gòu)示例

project-root/
├── src/
├── target/
│   └── yourapp.jar
├── Dockerfile
└── deploy/
│   └── deploy.sh
└── deploy-to-server.sh

二、編寫部署腳本

在 project-root/deploy 目錄中創(chuàng)建 deploy.sh 腳本(用于服務(wù)器端自動(dòng)執(zhí)行):

deploy/deploy.sh 內(nèi)容:

#!/bin/bash

APP_NAME="ddz_demo"
IMAGE_NAME="ddz_demo_image"
CONTAINER_NAME="ddz_demo_container"
JAR_FILE="ddz_demo.jar"
EXPOSE_PORT=9090

echo ">>> 清理舊容器(如有)"
docker stop $CONTAINER_NAME 2>/dev/null || true
docker rm $CONTAINER_NAME 2>/dev/null || true
docker rmi $IMAGE_NAME 2>/dev/null || true

echo ">>> 構(gòu)建 Docker 鏡像"
docker build -t $IMAGE_NAME .

echo ">>> 啟動(dòng)新容器"
docker run -d --name $CONTAINER_NAME -p $EXPOSE_PORT:$EXPOSE_PORT $IMAGE_NAME

注意:確保 Dockerfile 中的 EXPOSE 與實(shí)際 Java 服務(wù)端口一致。

三、編寫自動(dòng)上傳與執(zhí)行腳本

在本地項(xiàng)目根目錄添加一個(gè)部署腳本,如 deploy-to-server.sh

deploy-to-server.sh 內(nèi)容:

#!/bin/bash

SERVER_USER="youruser"
SERVER_IP="your.server.ip"
SERVER_DIR="/home/ubuntu/ddz_demo"

echo ">>> 打包項(xiàng)目"
mvn clean package -DskipTests

echo ">>> 創(chuàng)建遠(yuǎn)程目錄"
ssh $SERVER_USER@$SERVER_IP "mkdir -p $SERVER_DIR"

echo ">>> 上傳文件"
scp target/ddz_demo.jar Dockerfile deploy/deploy.sh $SERVER_USER@$SERVER_IP:$SERVER_DIR/

echo ">>> 執(zhí)行部署腳本"
ssh $SERVER_USER@$SERVER_IP "chmod +x $SERVER_DIR/deploy.sh && cd $SERVER_DIR && ./deploy.sh"

四、配置 SSH 免密登錄(自動(dòng)化關(guān)鍵)

如果不想每次上傳/執(zhí)行都輸入密碼,請(qǐng)配置 SSH 免密登錄:

1. 本地生成密鑰(如未生成)

ssh-keygen -t rsa -b 4096

2. 將公鑰添加到服務(wù)器

ssh-copy-id ubuntu@[your.server.ip]

或手動(dòng)上傳:

cat ~/.ssh/id_rsa.pub | ssh ubuntu@[your.server.ip] "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"

3. 驗(yàn)證

ssh ubuntu@[your.server.ip]

應(yīng)無(wú)需輸入密碼即可登錄。

五、部署過(guò)程演示

只需一條命令即可:

bash deploy-to-server.sh

腳本會(huì)自動(dòng)完成:

  • 打包項(xiàng)目
  • 上傳構(gòu)建產(chǎn)物與部署腳本
  • 構(gòu)建 Docker 鏡像
  • 啟動(dòng)容器服務(wù)

六、常見問(wèn)題與解決

問(wèn)題解決方法
Permission denied 上傳失敗確保目標(biāo)目錄屬于當(dāng)前用戶或改為 /home/ubuntu
Docker 權(quán)限錯(cuò)誤將用戶加入 docker 組:sudo usermod -aG docker $USER 并重啟
容器端口配置不一致確保 Dockerfile 中 EXPOSE 和 Java 服務(wù)端口一致
腳本無(wú)法執(zhí)行加權(quán)限:chmod +x deploy.sh

如果希望進(jìn)一步提升部署體驗(yàn),還可以引入:

  • Git Hooks + 腳本部署
  • Jenkins / GitHub Actions 遠(yuǎn)程觸發(fā)
  • 容器健康檢查 + 日志集中處理

以上就是使用Shell腳本實(shí)現(xiàn)SpringBoot項(xiàng)目自動(dòng)化部署到Docker的操作指南的詳細(xì)內(nèi)容,更多關(guān)于Shell實(shí)現(xiàn)SpringBoot自動(dòng)化部署的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Spring中屬性文件properties的讀取與使用詳解

    Spring中屬性文件properties的讀取與使用詳解

    這篇文章主要介紹了Spring中屬性文件properties的讀取與使用詳解的相關(guān)資料,需要的朋友可以參考下
    2017-02-02
  • 淺談MyBatis-Plus 提示發(fā)生了非法的反射訪問(wèn)操作

    淺談MyBatis-Plus 提示發(fā)生了非法的反射訪問(wèn)操作

    本文主要介紹了MyBatis-Plus 提示發(fā)生了非法的反射訪問(wèn)操作,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2026-01-01
  • 教你如何用好 Java 中的枚舉

    教你如何用好 Java 中的枚舉

    在本文中,我們將看到什么是 Java 枚舉,它們解決了哪些問(wèn)題以及如何在實(shí)踐中使用 Java 枚舉實(shí)現(xiàn)一些設(shè)計(jì)模式。下面小編將為大家詳細(xì)介紹
    2021-09-09
  • slf4j與jul、log4j1、log4j2、logback的集成原理

    slf4j與jul、log4j1、log4j2、logback的集成原理

    這篇文章主要介紹了slf4j與jul、log4j1、log4j2、logback的集成原理,以及通用日志框架與具體日志實(shí)現(xiàn)系統(tǒng)的機(jī)制機(jī)制介紹,包括依賴的jar包,jar沖突處理等
    2022-03-03
  • Java中Timer的schedule()方法參數(shù)詳解

    Java中Timer的schedule()方法參數(shù)詳解

    今天小編就為大家分享一篇關(guān)于Java中Timer的schedule()方法參數(shù)詳解,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2019-03-03
  • Java枚舉類接口實(shí)例原理解析

    Java枚舉類接口實(shí)例原理解析

    這篇文章主要介紹了Java枚舉類接口實(shí)例原理解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-01-01
  • 超級(jí)詳細(xì)的Java安裝教程(Mac版)

    超級(jí)詳細(xì)的Java安裝教程(Mac版)

    Java是一種廣泛使用的編程語(yǔ)言,可用于開發(fā)各種類型的應(yīng)用程序,這篇文章主要給大家介紹了關(guān)于Mac系統(tǒng)下Java安裝的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-10-10
  • 使用maven運(yùn)行Java Main的三種方法解析

    使用maven運(yùn)行Java Main的三種方法解析

    這篇文章主要介紹了使用maven運(yùn)行Java Main的三種方式的相關(guān)內(nèi)容,具有一定參考價(jià)值,需要的朋友可以了解下。
    2017-10-10
  • Mybatis實(shí)現(xiàn)自定義類型轉(zhuǎn)換器TypeHandler的方法

    Mybatis實(shí)現(xiàn)自定義類型轉(zhuǎn)換器TypeHandler的方法

    Mybatis實(shí)現(xiàn)自定義的轉(zhuǎn)換器非常的簡(jiǎn)單,只需要三步就可以實(shí)現(xiàn)自定義類型轉(zhuǎn)換器TypeHandler,非常不錯(cuò),具有參考借鑒價(jià)值,感興趣的朋友一起看下吧
    2016-07-07
  • Spring Cloud Gateway的配置與使用教程

    Spring Cloud Gateway的配置與使用教程

    這篇文章主要介紹了Spring Cloud Gateway的配置與使用,通過(guò)本文的介紹,我們了解了Spring Cloud Gateway的核心概念和基本配置,需要的朋友可以參考下
    2023-06-06

最新評(píng)論

天祝| 汪清县| 洛宁县| 南雄市| 都昌县| 加查县| 大安市| 通山县| 斗六市| 黎城县| 新津县| 宜兰县| 锦屏县| 舒兰市| 乐都县| 美姑县| 乐东| 东乡| 朝阳市| 金昌市| 柳州市| 平舆县| 吉水县| 石家庄市| 盐池县| 阜城县| 蕉岭县| 巴南区| 朝阳县| 江孜县| 扶余县| 巫山县| 沧州市| 赣榆县| 雅江县| 嵊泗县| 洪雅县| 任丘市| 奈曼旗| 漠河县| 平原县|