SpringBoot 自動化部署實戰:從環境搭建到 CI/CD 全流程

SpringBoot 自動化部署全流程實戰

一、環境準備(開發側)
  1. 基礎工具鏈安裝:
# JDK 17+
brew install openjdk@17
# Maven 構建工具
brew install maven
# Docker 環境
brew install --cask docker

  1. 項目配置驗證:
<!-- pom.xml 關鍵配置 -->
<properties><java.version>17</java.version><docker.image.prefix>your-registry</docker.image.prefix>
</properties><build><finalName>${project.artifactId}</finalName>
</build>

二、容器化配置
# 多階段構建 Dockerfile
FROM maven:3.8.6-eclipse-temurin-17 AS build
WORKDIR /app
COPY . .
RUN mvn clean package -DskipTestsFROM eclipse-temurin:17-jre
WORKDIR /app
COPY --from=build /app/target/*.jar app.jar
EXPOSE 8080
ENTRYPOINT ["java","-jar","/app/app.jar"]

三、CI/CD 流水線搭建

? 方案A:Jenkins 實現

// Jenkinsfile 核心配置
pipeline {agent anystages {stage('Build') {steps {sh 'mvn clean package'}}stage('Test') {steps {sh 'mvn test'}}stage('Docker Build') {steps {script {docker.build("${IMAGE_TAG}")}}}stage('Deploy') {when {branch 'main'}steps {sshagent(['prod-server']) {sh "scp target/*.jar user@prod:/opt/app"}}}}
}

? 方案B:GitHub Actions

# .github/workflows/deploy.yml
name: CI/CD Pipeline
on: [push]jobs:build:runs-on: ubuntu-lateststeps:- uses: actions/checkout@v3- name: Set up JDK 17uses: actions/setup-java@v3with:java-version: '17'- name: Build with Mavenrun: mvn -B package --file pom.xml- name: Docker Buildrun: docker build -t ${{ secrets.DOCKERHUB_USER }}/app:$GITHUB_SHA .- name: Deploy to Productionif: github.ref == 'refs/heads/main'uses: appleboy/ssh-action@v0.1.10with:host: ${{ secrets.PROD_HOST }}username: ${{ secrets.SSH_USER }}key: ${{ secrets.SSH_KEY }}script: |docker-compose down && docker-compose up -d

四、部署驗證與監控
  1. 健康檢查端點:
@RestController
public class HealthController {@GetMapping("/health")public ResponseEntity<String> healthCheck() {return ResponseEntity.ok("STATUS:UP");}
}

  1. 日志監控方案:
# 查看容器日志
docker logs -f springboot-app# 使用 Prometheus + Grafana 監控
# application.yml 配置
management:endpoints:web:exposure:include: health,metrics,prometheusmetrics:export:prometheus:enabled: true

五、安全加固措施
  1. 密鑰管理方案:
# 使用 Docker Secrets
echo "db_password" | docker secret create db_pass -

  1. 鏡像掃描:
# 使用 Trivy 掃描漏洞
trivy image your-registry/app:latest

六、典型部署架構
開發環境 -> 代碼提交 -> CI 流水線 -> 鏡像倉庫 -> 
Kubernetes 集群 -> 生產環境 -> 監控告警

最佳實踐建議

  1. 使用藍綠部署或金絲雀發布策略降低風險
  2. 每次構建生成唯一鏡像標簽(如 Git commit SHA)
  3. 在流水線中集成 SonarQube 代碼質量檢測
  4. 對生產環境部署進行審批流程控制

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/84901.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/84901.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/84901.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Flutter動畫與交互:打造流暢用戶體驗的完整指南

在移動應用開發中&#xff0c;流暢的動畫和自然的交互是提升用戶體驗的關鍵因素。Flutter作為Google推出的跨平臺UI工具包&#xff0c;提供了一套強大而靈活的動畫系統&#xff0c;使開發者能夠輕松創建專業級的動畫效果。本文將深入探討Flutter中的動畫與交互技術&#xff0c;…

山東大學軟件學院項目實訓:基于大模型的模擬面試系統項目總結(九)

在山東大學軟件學院的項目實訓中&#xff0c;團隊成員們圍繞基于大模型的模擬面試系統展開了一系列開發與優化工作。以下是本周項目的核心進展與成果總結。 前端界面優化與 Bug 修復&#xff08;吳尤&#xff09; Logo 顯示問題修復 在項目開發過程中&#xff0c;團隊發現項…

14.vue.js的watch()的注意事項(1)

一、 Q &#xff1a;因為 state 有內部的屬性 也就是id。 因為要追逐id。所以要寫函數&#xff1f;而不能直接監聽state。 只監聽state &#xff0c;監聽不到id的變化嗎&#xff1f; A&#xff1a; 為什么監聽 state 不等于監聽 state.id&#xff1f; 在 Vue 3 中&#xff0…

強化學習入門:價值、回報、策略概念詳解

前言 最近想開一個關于強化學習專欄&#xff0c;因為DeepSeek-R1很火&#xff0c;但本人對于LLM連門都沒入。因此&#xff0c;只是記錄一些類似的讀書筆記&#xff0c;內容不深&#xff0c;大多數只是一些概念的東西&#xff0c;數學公式也不會太多&#xff0c;還望讀者多多指教…

基于“數智立體化三維架構”框架的醫療數智化機制研究

1 研究背景與框架基礎 當前,全球醫療服務體系正經歷深刻的數智化轉型浪潮,人工智能、大數據、云計算等新一代信息技術與醫療健康領域的融合不斷深入,催生了醫療服務模式的革命性變化。在我國,數智化技術已成為提升基層衛生服務質量、促進醫療服務公平可及、增進百姓健康福…

OpenCV CUDA模塊圖像變形------對圖像進行旋轉操作函數rotate()

操作系統&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 編程語言&#xff1a;C11 算法描述 該函數用于對圖像進行 GPU 加速的旋轉操作&#xff0c;支持指定旋轉角度、縮放中心偏移和插值方法。是 OpenCV CUDA 模塊中用于圖像旋轉的核心函…

【面板數據】中國與世界各國新能源汽車進出口數據-分類別與不分類別(2017-2024年)

新能源汽車作為中國制造高質量發展的重要代表&#xff0c;其進出口數據不僅反映了我國技術實力與產業格局的變化&#xff0c;也是理解全球綠色交通趨勢、制定國家戰略決策的重要依據。目前國內主流定義判斷標準主要參考中國工信部于2009年發布的《新能源汽車生產企業及產品準入…

亞馬遜云服務器(AWS)會限制用戶使用嗎?深度解讀AWS資源政策

一、AWS的資源邏輯&#xff1a;為什么說"不限速"&#xff1f; AWS采用"按需分配"的資源配置模式&#xff0c;其核心限制并非來自人為設定&#xff0c;而是取決于&#xff1a; 實例類型配置&#xff08;如t2.micro默認CPU積分制&#xff09; 賬戶服務配額…

頂級視頻生成大模型分析:Seedance 1.0 Pro (字節跳動) - 新晉榜首

&#x1f4d6; 目錄 一、概述與市場格局 1.1 AI視頻生成技術現狀1.2 主要競爭者概覽1.3 評測標準與方法 二、頂級模型詳細分析 2.1 Seedance 1.0 Pro (字節跳動) - 新晉榜首2.2 OpenAI Sora - 行業先驅者2.3 Google Veo 3 - 音視頻一體化領航者2.4 快手可靈 2.0 - 國產之光…

【Spring源碼核心篇-08】spring中配置類底層原理和源碼實現

Spring源碼核心篇整體欄目 內容鏈接地址【一】Spring的bean的生命周期https://zhenghuisheng.blog.csdn.net/article/details/143441012【二】深入理解spring的依賴注入和屬性填充https://zhenghuisheng.blog.csdn.net/article/details/143854482【三】精通spring的aop的底層原…

【無標題】在 4K 高分辨率(如 3840×2160)筆記本上運行 VMware 虛擬機時平面太小字體太小(ubuntu)

? 方法一&#xff1a;寫入 ~/.xprofile&#xff08;推薦&#xff09; 這個文件會在你登錄圖形界面前自動執行&#xff0c;適合設置縮放比例等桌面配置。 1. 打開 .xprofile 文件&#xff08;如果沒有會自動創建&#xff09;&#xff1a; nano ~/.xprofile2. 寫入以下內容&a…

「Linux文件及目錄管理」目錄結構及顯示類命令

Linux文件系統的目錄結構 Linux文件系統采用嚴格的樹形結構,所有文件和目錄都從根目錄(/)開始延伸。以下是主要目錄的詳細說明: /bin:存放系統啟動和運行所必需的二進制可執行文件,如ls、cp、mv等基本命令。/etc:存放系統配置文件,如/etc/passwd(用戶賬戶信息)、/et…

人工智能學習13-Numpy-規律數組生成

人工智能學習概述—快手視頻 人工智能學習13-Numpy-規律數組生成—快手視頻 NumPy&#xff08;Numerical Python&#xff09;是 Python 的一種開源的數值計算擴展。 這種工具可用來存儲和處理大型矩陣&#xff0c;比 Python 自身的嵌套列表 &#xff08;nested list structure…

Spring Boot 集成 Redis 實戰教程

前言 在高并發、大數據量的應用場景中&#xff0c;緩存是提升系統性能的關鍵技術。Redis 憑借其卓越的讀寫性能、豐富的數據結構和高可用性&#xff0c;成為開發者常用的緩存工具。本教程將嚴格依據Spring 官方文檔與Redis 官方文檔&#xff0c;詳細介紹 Spring Boot 與 Redis…

龍蜥開發者說:我的龍蜥開源之旅 | 第 32 期

「龍蜥開發者說」第 32 期來了&#xff01;開發者與開源社區相輔相成&#xff0c;相互成就&#xff0c;這些個人在龍蜥社區的使用心得、實踐總結和技術成長經歷都是寶貴的&#xff0c;我們希望在這里讓更多人看見技術的力量。本期故事&#xff0c;我們邀請了龍蜥社區開發者潘玨…

在mac上安裝sh腳本文件

要將 jd-gui.sh 腳本轉換為在 macOS ARM 系統上帶有自定義圖標的可點擊運行的程序&#xff0c;你可以通過創建一個應用程序包&#xff08;.app&#xff09;來實現。以下是詳細步驟&#xff1a; 步驟 1&#xff1a;創建應用程序包目錄結構 應用程序包實際上是一個特殊的目錄&a…

用bilibili一個講座視頻,生成一本科普書籍

用bilibili一個講座視頻,生成一本科普書籍 一、功能介紹1.1 智能文本處理1.2 知識提煉與結構化1.3 專業知識普及1.4 自動化書籍生成1,5 大規模處理能力二、技術特點三、應用意義3.1 教育領域3.2 研究領域3.3 內容創作3.4 企業應用四、創新價值五、使用場景示例六、操作步驟6.1 …

黑馬教程強化day3-1

目錄 一、File1.定義&#xff1a;2.創建File類的對象3.File提供的判斷文件類型、獲取文件信息功能4.File提供的創建的方法5.File類刪除文件的功能6.File提供的遍歷文件夾的方法代碼演示 二、遞歸&#xff08;了解遞歸算法&#xff0c;以便實現多級遍歷找文件&#xff09;1.定義…

milvus 總結

1. milvus 的默認 admin 角色賬號 root 的密碼 為 Milvus 2. 最開始使用命令&#xff1a; docker-compose -f milvus-standalone-docker-compose.yml up -d 啟動 milvus 后&#xff0c;使用 attu 登錄 Milvus 是不需要輸入賬號/密碼的&#xff0c;可以使用如下方式開啟 mi…

基于docker技術的單主機環境模擬測試批量客戶端

EX. 任務背景 近期接到一個需求是在一個高性能服務器上&#xff0c;模擬啟動多個待測試客戶端的場景&#xff0c;但這個客戶端程序有點特殊&#xff0c;設置了守護模式&#xff0c;并且需要管理員權限會監控系統的/dev/mem節點&#xff0c;單個環境中只能啟動一個。 當前的測…