当前位置: 首页 > news >正文

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.xdnf.cn/news/1037359.html

相关文章:

  • vulnyx Diff3r3ntS3c writeup
  • CLONE:用于长距离任务的闭环全身人形机器人遥操作
  • C++之模板进阶
  • 多线程下 到底是事务内部开启锁 还是先加锁再开启事务?
  • 《人工智能时代与人类价值》读书简要笔记
  • [CVPR 2025] DeformCL:基于可变形中心线的3D血管提取新范式
  • Docker全平台安装指南:从零到一构建容器化环境(满级版)
  • GDI+ 中与GDI32取图形区域函数对比CreateEllipticRgn/CreatePolygonRgn
  • g++ a.cpp -o a ‘pkg-config --cflags --libs opencv4‘/usr/bin/ld: 找不到 没有那个文件或目录
  • [智能客服project] AI提示词配置 | 主协调器 | 闲鱼协议工具
  • PX4无人机|MID360使用FAST_LIO,实现自主定位及定点——PX4无人机配置流程(五)
  • Vue Methods 实现原理详解
  • 【数据集成与ETL 04】dbt实战指南:现代化数据转换与SQL代码管理最佳实践
  • 一个前端正则校验引发的问题
  • 马上行计划管理后端架构
  • 深度分析Javascript中的Promise
  • 动态多目标进化算法:基于迁移学习的动态多目标遗传算法Tr-NSGA-II求解CEC2015,提供完整MATLAB代码
  • python基础与数据类型
  • C# 枚 举(枚举)
  • Python Day51
  • pyspark非安装使用graphframes
  • PHP+mysql雪里开轻量级报修系统 V1.0Beta
  • Laravel 从版本 5 到 12 每个版本都引入了一些新的特性、改进和弃用的功能
  • rt-thread的定时器驱动(裸机版本)记录.
  • Flutter JSON解析全攻略:使用json_serializable实现高效序列化
  • java设计模式[1]之设计模式概览
  • 免费电子印章生成工具,可在线设计印章
  • TLSF 内存分配器
  • 通达信跟老庄追涨停指标公式
  • 【大模型分布式训练】多卡解决单卡训练内存不足的问题