文章目录
- 前言
- 一、环境配置
- 二、安装jenkins
-
- [2.1 配置目录与文件](#2.1 配置目录与文件)
- [2.2 编辑maven配置文件](#2.2 编辑maven配置文件)
- [2.3 编辑Dockerfile创建镜像文件](#2.3 编辑Dockerfile创建镜像文件)
- [2.4 创建挂载点并创建镜像](#2.4 创建挂载点并创建镜像)
- [2.5 创建并运行jenkins容器](#2.5 创建并运行jenkins容器)
- 三、jenkins部署
-
- [3.1 拉取jenkins镜像](#3.1 拉取jenkins镜像)
- [3.2 创建jenkins镜像](#3.2 创建jenkins镜像)
-
- [3.2.1 setting.xml文件配置](#3.2.1 setting.xml文件配置)
- [3.2.2 创建好jenkins_home目录](#3.2.2 创建好jenkins_home目录)
- [3.2.3 新建Dockerfile 准备制作镜像](#3.2.3 新建Dockerfile 准备制作镜像)
- [3.2.4 开始创建镜像](#3.2.4 开始创建镜像)
- [3.2.5 给docker.sock文件加权](#3.2.5 给docker.sock文件加权)
- [3.3 开启jenkins镜像](#3.3 开启jenkins镜像)
- [3.4 jenkins配置](#3.4 jenkins配置)
- 四、部署mysql
-
- [4.1 安装mysql](#4.1 安装mysql)
- [4.2 创建若依数据库](#4.2 创建若依数据库)
- [4.3 将ruoyi项目中的sql文件导入进mysql](#4.3 将ruoyi项目中的sql文件导入进mysql)
- 五、部署redis
- 六、后端部署
-
- [6.1 配置好后端镜像文件与自动部署文件](#6.1 配置好后端镜像文件与自动部署文件)
- [6.1.1 配置Dockerfile](#6.1.1 配置Dockerfile)
-
- [6.1.2 配置Jenkinsfile文件](#6.1.2 配置Jenkinsfile文件)
- [6.1.3 配置构建加速文件](#6.1.3 配置构建加速文件)
- [6.2 将ruoyi项目传入到gitlab](#6.2 将ruoyi项目传入到gitlab)
- [6.3 Jenkins中新建后端任务](#6.3 Jenkins中新建后端任务)
-
- [6.3.1 配置gitlab与jenkins免密](#6.3.1 配置gitlab与jenkins免密)
- [6.3.2 配置后端流水线](#6.3.2 配置后端流水线)
- 七、部署前端
-
- [7.1 准备前段的镜像文件、流水线文件等](#7.1 准备前段的镜像文件、流水线文件等)
-
- [7.1.1 编写镜像文件](#7.1.1 编写镜像文件)
- [7.1.2 编写流水线文件](#7.1.2 编写流水线文件)
- [7.1.3 编写加速器(选做)](#7.1.3 编写加速器(选做))
- [7.2 将前端文件传到gitlab](#7.2 将前端文件传到gitlab)
- [7.3 创建前段流水线](#7.3 创建前段流水线)
- 总结
前言
本文主要以实验为主,讲述了配置ruoyi项目的自动化部署。
一、环境配置

主机10.0.0.11的gitlab和docker在前几期博客中已经配置完成,想了解的宝子们可以去翻看前面内容哦😁
关闭防火墙与网络增强服务
二、安装jenkins
2.1 配置目录与文件

maven安装包、jdk安装包、node安装包、dockerfile文件(创建容器文件)、setting.xml(maven配置文件)
提前拉取一个jenkins底层镜像
docker pull jenkins/jenkins:2.480-jdk21 ------------------------------------拉取jenkins镜像
2.2 编辑maven配置文件
由于3.8.x以上版本的maven只支持https协议,我们需要覆盖原有的settings.xml,让它支持http
vim setting.xml ------------------------------ 编辑setting.xml文件

2.3 编辑Dockerfile创建镜像文件
vim Dockerfile ------------------------------------------编辑创建镜像文件

FROM jenkins/jenkins:2.480-jdk21 ------------------------------底层镜像
ADD apache-maven-3.9.9-bin.tar.gz /usr/local ------------------------将maven安装包传到容器中的/usr/local目录下并解压
ADD jdk-8u421-linux-x64.tar.gz /usr/local ------------------------将jdk安装包传到容器中的/usr/local目录下并解压
ADD node-v11.0.0-linux-x64.tar.gz /usr/local ------------------------将node安装包传到容器中的/usr/local目录下并解压
COPY settings.xml /usr/local/apache-maven-3.9.9/conf/ ------------------------将maven配置文件覆盖maven配置文件
以下为配置环境变量
ENV TZ=Asia/Shanghai
ENV M2_HOME=/usr/local/apache-maven-3.9.9
ENV NODE_HOME=/usr/local/node-v11.0.0-linux-x64
ENV PATH= M2_HOME/bin: NODE_HOME/bin:$PATH
2.4 创建挂载点并创建镜像
mkdir /data/jenkins/jenkins_home ------------------------------创建挂载点目录
chmod +777 jenkins_home ------------------------------------给挂载点赋权
cd /data/jenkins ------------------------------------------切换到Dockerfile的父目录
docker build -t jenkins:123 . ------------------------------------------创建镜像,镜像标签为jenkins:123
chmod +777 /var/run/docker.sock ------------------------------------------------由于后期需要jenkins 调用docker 所以 授予docker.sock权限,因为一会儿进入jenkins容器的时候要用docker命令
2.5 创建并运行jenkins容器
docker run -d --name jk -p 8080:8080 -v /data/jenkins/jenkins_home:/var/jenkins_home -v /etc/localtime:/etc/localtime -v /run/docker.sock:/run/docker.sock -v /usr/bin/docker:/usr/bin/docker jenkins:123 ------------------------------------创建并运行jenkins容器,容器名字jk,端口映射到主机的端口为8080,挂载/etc/localtime、/run/docker.sock、/usr/bin/docker

(这里容器已经创建完成)
三、jenkins部署
3.1 拉取jenkins镜像
docker pull jenkins/jenkins:2.480-jdk21 ------------------------------拉取jenkins镜像
(在dockerfile文件中也可以直接拉取,这一步可以不做,做了更规范)

3.2 创建jenkins镜像
需要准备一下几个文件及安装包

3.2.1 setting.xml文件配置
(由于3.8.x以上版本的maven只支持https协议,我们需要覆盖原有的settings.xml,让它支持http)

3.2.2 创建好jenkins_home目录
jenkins_home用来存放各种文件和目录(包括插件与小工具,比如要配置的jdk)
mkdir -p /data/jenkins/jenkins_home ------------------------------创建目录
chmod +777 jenkins_home ------------------------------给目录赋权

3.2.3 新建Dockerfile 准备制作镜像
vim Dockerfile ------------------------------编辑Dockerfile镜像文件

ENV TZ=Asia/Shanghai
ENV M2_HOME=/usr/local/apache-maven-3.9.9
ENV NODE_HOME=/usr/local/node-v11.0.0-linux-x64
(这里是配置node和maven环境,jdk环境配置在jenkins中配置)
3.2.4 开始创建镜像
docker build -t jenkins:ruoyi ------------------------------------------构建镜像,镜像标签为jenkins:ruoyi
(图中使用标签为jenkins:123)

3.2.5 给docker.sock文件加权
因为之后jenkins要自动化部署ruoyi项目,需要通过jenkins用户调用gitlab中的命令来操作,而调用gitlab之前要调用docker,因此要赋权。
chmod +777 /var/run/docker.sock

3.3 开启jenkins镜像
docker run -d --name jenkins
-p 0.0.0.0:8080:8080
-v /data/jenkins/jenkins_home:/var/jenkins_home
-v /etc/localtime:/etc/localtime
-v /run/docker.sock:/run/docker.sock
-v /usr/bin/docker:/usr/bin/docker
jenkins

3.4 jenkins配置
访问jenkins的ip与端口

先要输入初始密码,初始密码可以在容器中的/var/jenkins_home/secrets/initialAdminPassword查看
docker exec jenkins cat
/var/jenkins_home/secrets/initialAdminPassword ------------------------查看初始密码

安装完推荐插件之后,创建一个管理员用户

四、部署mysql
4.1 安装mysql
docker pull mysql:8.0.39 ------------------------------------拉取mysql:8.0.39镜像

docker run -d --name mysql -p 0.0.0.0:3306:3306 -e MYSQL_ROOT_PASSWORD=3208 --restart=always mysql:8.0.39 ------------------------------------创建并运行容器,容器名字为mysql,映射到宿主机的端口为3306,mysql密码为3208,始终保存重启状态。

4.2 创建若依数据库
docker run -d
--name mysql
-p 0.0.0.0:3306:3306
-e MYSQL_ROOT_PASSWORD=123456
--restart=always
mysql:8.0.39

4.3 将ruoyi项目中的sql文件导入进mysql




五、部署redis
docker run -d
--name redis
-p 0.0.0.0:6379:6379
--restart=always
redis:7.4.1

六、后端部署
6.1 配置好后端镜像文件与自动部署文件
6.1.1 配置Dockerfile
vim Dockerfile ------------------------------编辑 Dockerfile文件

6.1.2 配置Jenkinsfile文件

6.1.3 配置构建加速文件

6.2 将ruoyi项目传入到gitlab
git remote -v ------------------------------------查看远程仓库的别名和路径
git remote add origin ssh://git@10.0.0.11:222/root/dog.git ------------------------定义远程仓库的别名与路劲
git add . ------------------------------将文件存入暂存区
git commit -m "创建信息" ------------------------------提交暂存区的文件
git push -u oringin master ------------------------------上传文件

6.3 Jenkins中新建后端任务





6.3.1 配置gitlab与jenkins免密
这是因为jenkins与gitlab没有做ssh免密认证。
因此接下来要做jenkins与ssh的密钥配对
第一步 生成密钥对(在jenkins容器中)
ssh-keygen ------------------------------------------------------生成密钥对

第二步 将公钥写入gitlab

第三步 进行一次ssh通讯
ssh-keyscan -p 222 10.0.0.11 >> ~/.ssh/known_hosts

做到这一步免密登录这地方应该没问题了
难点:这部分主要难点就是要搞清楚什么时候要在容器做什么时候在宿主机上做,就拿这部分密钥对配置与git和gitlab做密钥对配置举例来说。
git:这里是在容器内配置
jenkins:这里是在宿主机配置
其实要区分密钥应该在哪配置很简单,我们要弄清楚jenkins的操作和git操作是由谁来进行的,实际上jenkins的操作都有jenkin用户进行的,那么我们配置密钥时,一定要将私钥配置给jenkins用户,因此我们先要搞清楚jenkins用户到底是在容器内还是宿主机中,配置密钥是公钥与私钥会默认配置到操作用户的家目录下,接下来我们看看两个用户在容器中还是在宿主机中。


由上两张图可知,git用户在宿主机中,jenkins用户在容器中,因此要确定密钥对应该在哪配置,我们只需要判断操作用户在哪就行。
6.3.2 配置后端流水线
选择拉取路径





拉取原理:一旦gitlab中的文件、源代码有改变,webhook会通知jenkins进行拉取并构建流水线。
七、部署前端
7.1 准备前段的镜像文件、流水线文件等
7.1.1 编写镜像文件
vim Dockerfile ------------------------------编写镜像文件

7.1.2 编写流水线文件
vim Jenkinsfile ------------------------------------------编写流水线文件

7.1.3 编写加速器(选做)
vim .dockerignore
node_modules
src
7.2 将前端文件传到gitlab
第一步 先初始化git仓库,使该目录下有远程仓库git
git init ------------------------------------初始化
第二步 添加远程仓库gutlab别名与路径
git remote add 远程仓库别名(这里使用yjs) 路径(这里用的ssh路径)
git remote add yjs ssh://git@10.0.0.11:222/root/ruoyi.git
第三步 将文件加入暂存区
git add 文件名字
git add . ------------------------------将该目录下的所有文件加入暂存区

(图中项目名字与路劲有差别,但是基本步骤是对的)
7.3 创建前段流水线
该步骤与后端流水线的创建方式一模一样,这里不过多说明,直接看图。







这样就部署完成、
总结
本文主要以实验为主,讲述了配置ruoyi项目的自动化部署。希望本文对您有所帮助,谢谢观看😜