当前位置: 代码迷 >> 综合 >> 【Jenkins】Jenkins + Docker + Docker Compose + Harbor 实现 Spring Boot 项目持续集成
  详细解决方案

【Jenkins】Jenkins + Docker + Docker Compose + Harbor 实现 Spring Boot 项目持续集成

热度:60   发布时间:2023-11-19 15:59:21.0

环境安装

安装 Docker

参考 Linux 安装 Docker

安装 Docker Compose

参考 安装 Docker Compose

安装 Jenkins

参考 Docker Compose 安装 Jenkins

安装 Harbor 镜像仓库

参考 Harbor Docker 镜像仓库的安装
以上安装完成后,需要在 Jenkins 服务器和部署服务器上配置 Harbor 的镜像仓库地址

新增 Harbor 仓库

在这里插入图片描述
在这里插入图片描述

编写 Dockerfile 和 Docker Compose

在 Spring Boot 项目中新增 Dockerfile 文件

FROM openjdk:8-jre
COPY recruit-0.0.1-SNAPSHOT.jar app.jar
ENTRYPOINT ["java", "-jar", "/app.jar"]
EXPOSE 80

新增 docker-compose.yml 文件

version: '3.1'
services:recruit:restart: alwaysimage: harbor.yuu.com/recruit/recruitcontainer_name: recruitports:- 80:80networks:- bootnetworks:boot:external:name: recruit

创建 Docker 网络组

在部署服务器创建 docker 网络组

docker network create recruit

配置 Jenkins 的 Git 仓库 SSH 免密登录

  • 交互式进入 Jenkins 容器
    docker exerc -it jenkins /bin/bash
    
  • 生成 SSH KEY
    ssh-keygen -t rsa -C "xxx@xxx.com"
    
  • 查看公钥
    cat /var/jenkins_home/.ssh/id_rsa.pub
    
  • 添加密钥到 Git 仓库
    在这里插入图片描述
  • 手动连接 Git,生成验证信息
    ssh -t gitee.com
    
    在这里插入图片描述

Jenkins 配置 Publish Over SSH

  • 系统管理 -> 系统设置 -> Publis Over SSH
    在这里插入图片描述
    在这里插入图片描述
    其中 Remote Directory 是指 Jenkins 可以在目标服务器操作的目录
  • 测试能否通信
    在这里插入图片描述
  • 保存

创建 Jenkins 项目

  • 选择自由风格
    在这里插入图片描述

配置第一次构建

  • 源码管理,配置项目 Git 仓库 SSH 地址
    在这里插入图片描述

  • 增加构建步骤,调用顶层 Maven 目标,选择 Maven 的版本,目标为 mvn clean package 命令
    在这里插入图片描述

  • 保存后,构建项目
    在这里插入图片描述

  • 查看构建日志
    在这里插入图片描述
    在这里插入图片描述

配置正式构建

  • 关闭源码管理
    在这里插入图片描述

  • 删除 调用顶层 Maven 目标 构建
    在这里插入图片描述

  • 增加构建步骤 执行 Shell
    在这里插入图片描述

    cd /var/jenkins_home/workspace/recruit
    git pull origin master
    /var/jenkins_home/apache-maven-3.6.0/bin/mvn clean package
    
  • 增加 SSH 构建 Send files or execute commands over SSH
    在这里插入图片描述

    • Source files:需要传输到远程目标服务器的文件
      **/*.jar,docker/**
      
      将打包好的 jar 和 docker 文件夹下的 Dockerfiledocker-compose.yml 文件发送到目标服务器
    • Remove prefix:删除前缀。比如传输 **/*.jar,我们打包的 .jar 文件是在 target 目录下的,传输时会一并创建 target 目录,如果不希望创建 target 目录,则可以使用该参数屏蔽掉这些前缀文件夹。
    • Remote directory:在远程目标服务器创建操作目录
    • Exec command:在远程目标服务器执行的命令
      # 进入远程服务器的操作目录
      cd /usr/local/serves/recruit
      # 将项目 jar 拷贝到 docker 文件夹下,用于构建 Docker 镜像
      cp target/recruit-0.0.1-SNAPSHOT.jar docker
      # 进入 docker 目录
      cd docker
      #使用 Dockerfile 构建镜像
      docker build -t recruit .
      # 标记镜像
      docker tag recruit:latest harbor.yuu.com/recruit/recruit:latest
      # 登录 Harbor 镜像仓库
      docker login harbor.yuu.com -u admin -p Harbor12345
      # 推送镜像到仓库
      docker push harbor.yuu.com/recruit/recruit:latest
      # 关闭项目
      docker-compose down
      # 启动项目
      docker-compose up -d
      # 删除虚悬镜像
      docker image prune -f 
      

效果演示

  • 当前首页标题
    在这里插入图片描述
  • 修改首页标题
    在这里插入图片描述
  • 提交到 Git 仓库
    在这里插入图片描述
  • Jenkins 构建项目
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 修改成功
    在这里插入图片描述
  相关解决方案