Docker 加jekins +Springboot实现自动化部署

Docker 加jenkins +Springboot实现自动化部署

本文章实现最简单全面的Jenkins+docker+springboot 一键自动部署项目,步骤齐全,少走坑路。
环境:centos7+git(gitee)

简述实现步骤:在docker安装jenkins,配置jenkins基本信息,利用Dockerfile和shell脚本实现项目自动拉取打包并运行。

一、Docker和镜像安装
2.1、Docker安装
2.1.1、检查环境
Docker运行环境要求系统为64位、Linux系统内核版本为 3.8以上

docker tag 448a08f1d2f9 nginx:latest

查看自己虚拟机的内核:

cat /etc/redhat-release

2.1.2、搭建gcc环境(gcc是编程语言译器)

yum -y install gcc
yum -y install gcc-c++

2.1.3、安装需要的软件包

yum install -y yum-utils

2.1.4、装镜像仓库
因为docker的服务器是在国外,

所以有时候从仓库中下载镜像的时候会连接被拒绝或者连接超时的情况!

因此可以使用阿里云镜像仓库

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

2.1.5、新yum软件包索引

yum makecache fast

2.1.6、安装docker引擎

yum install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin

2.1.7、启动docker

systemctl start docker

2.1.8、查看docker版本

docker version

2.1.9、配置阿里云镜像加速
为了提高镜像的拉取、发布的速度,可以配置阿里云镜像加速(推荐)

1、找到容器镜像服务ARC

2、复制加速器地址

3、在CentOS下配置镜像加速器

mkdir -p /etc/docker 
tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["你个人的阿里云镜像加速器地址"]
}
二部署容器可视化管理工具安装Jenkins

Jenkins中文官网:https://www.jenkins.io/zh/

安装J enkins

一、Jenkins镜像

#查询镜像

docker search jenkins

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WYGp2isV-1685958085793)(D:\soft\Tencent\WeChat\Documents\WeChat Files\WeChat Files\wxid_590kmi1hdcz322\FileStorage\Temp\1685944237834.png)]

这里使用的是第二个镜像(因为第一个镜像的docker版本较低)

#下载镜像

docker pull jenkins/jenkins

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-X3cPghSI-1685958085793)(D:\soft\Tencent\WeChat\Documents\WeChat Files\WeChat Files\wxid_590kmi1hdcz322\FileStorage\Temp\1685944316281.png)]

#查看镜像
docker images

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2ST8W5da-1685958085794)(D:\soft\Tencent\WeChat\Documents\WeChat Files\WeChat Files\wxid_590kmi1hdcz322\FileStorage\Temp\1685944361213.png)]

二、启动Jenkins容器

创建挂载文件夹,并且进行文件权限授予

#创建文件夹

mkdir -p /home/jenkins_home

#权限

chmod 777 /home/jenkins_home
docker run -d -uroot -p 8888:8080 -p 50000:50000 --name jenkins -v /home/jenkins_home:/var/jenkins_home -v /etc/localtime:/etc/localtime jenkins/jenkins
命令	描述
-d	后台运行容器,并返回容器ID
-uroot	使用 root 身份进入容器,推荐加上,避免容器内执行某些命令时报权限错误
-p 9095:8080	将容器内8080端口映射至宿主机9095端口,这个是访问jenkins的端口
-p 50000:50000	将容器内50000端口映射至宿主机50000端口
--name jenkins	设置容器名称为jenkins
-v /home/jenkins_home:/var/jenkins_home	 :/var/jenkins_home目录为容器jenkins工作目录,我们将硬盘上的一个目录挂载到这个位置,方便后续更新镜像后继续使用原来的工作目录
-v /etc/localtime:/etc/localtime	让容器使用和服务器同样的时间设置
jenkins/jenkins	镜像的名称,这里也可以写镜像ID
#日志查看
docker logs jenkins
jenkins 没有执行docker的 解决方法 建议使用此启动脚本
docker run -d \
-u root \
--name jenkins \
--privileged=true \
--restart=always \
-p 8888:8080 \
-p 50000:50000 \
-v jenkins-data:/var/jenkins_home \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /usr/bin/docker:/usr/bin/docker \
jenkins/jenkins
三、访问Jenkins

在浏览器中输入:http://serverIp:port/访问jenkins,serverIp为docker宿主机的ip,port即为宿主机映射的端口。我的即为:

http://http://192.168.232.3/:8888/

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VFZVuVFE-1685958085794)(D:\soft\Tencent\WeChat\Documents\WeChat Files\WeChat Files\wxid_590kmi1hdcz322\FileStorage\Temp\1685944781705.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mU29z6Xb-1685958085794)(D:\soft\Tencent\WeChat\Documents\WeChat Files\WeChat Files\wxid_590kmi1hdcz322\FileStorage\Temp\1685944747270.png)]

这里要求输入初始的管理员密码,根据提示密码在/var/jenkins_home/secrets/initialAdminPassword这个文件中,注意这个路径是Docker容器中的,所以我们通过如下命令获取一下

docker exec jenkins cat /var/jenkins_home/secrets/initialAdminPassword

输入上面获取的密码,即可解锁。别忘了我们映射了本地数据卷/opt/jenkins_data/,所以也可以通过如下命令输出:

cat /opt/jenkins_data/secrets/initialAdminPassword

还有我们的日志文件就可以看见密码,可以直接使用。

四、安装插件

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6qrhTVGg-1685958085794)(C:\Users\zsb\AppData\Roaming\Typora\typora-user-images\image-20230605140152664.png)]

因为网络原因,需要将插件源设置为国内的,这样才可以安装插件。进入宿主机目录 /home/jenkins_home/,编辑文件

hudson.model.UpdateCenter.xml

cd /home/jenkins_home/
cat hudson.model.UpdateCenter.xml 

将 url 内容修改为 https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json(清华大学官方镜像)

重启容器

docker restart jenkins

重启之后,选择推荐插件安装!!!

插件安装完成,创建管理员用户

至此,Jenkins安装完成!!!

安装插件

选择第一个:安装推荐的插件

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eyNIm4hJ-1685958085795)(D:\soft\Tencent\WeChat\Documents\WeChat Files\WeChat Files\wxid_590kmi1hdcz322\FileStorage\Temp\1685944858218.png)]

创建管理员用户

此账户一定要记住哦

系统配置

安装需要插件

进入【首页】–【系统管理】–【插件管理】–【可选插件】

搜索以下需要安装的插件,点击安装即可。

安装Maven Integration

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uK2TjRu2-1685958085795)(D:\soft\Tencent\WeChat\Documents\WeChat Files\WeChat Files\wxid_590kmi1hdcz322\FileStorage\Temp\1685945053900.png)]

安装Publish Over SSH(如果不需要远程推送,不用安装)

如果使用Gitee 码云,安装插件Gitee(Git自带不用安装)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wyd9N5WB-1685958085795)(D:\soft\Tencent\WeChat\Documents\WeChat Files\WeChat Files\wxid_590kmi1hdcz322\FileStorage\Temp\1685945053900.png)]

配置git

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-o3s0iHOQ-1685958085795)(D:\soft\Tencent\WeChat\Documents\WeChat Files\WeChat Files\wxid_590kmi1hdcz322\FileStorage\Temp\1685945250780.png)]

配置Maven

进入【首页】–【系统管理】–【全局配置】,拉到最下面maven–maven安装

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xLxMAtCn-1685958085796)(D:\soft\Tencent\WeChat\Documents\WeChat Files\WeChat Files\wxid_590kmi1hdcz322\FileStorage\Temp\1685945217481.png)]

创建任务
新建任务

点击【新建任务】,输入任务名称,点击构建一个maven项目

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7QMCW3Z4-1685958085796)(D:\soft\Tencent\WeChat\Documents\WeChat Files\WeChat Files\wxid_590kmi1hdcz322\FileStorage\Temp\1685945155005.png)]

源码管理

点击【源码管理】–【Git】,输入仓库地址,添加凭证,选择好凭证即可。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-davPtpG5-1685958085796)(C:\Users\zsb\AppData\Roaming\Typora\typora-user-images\image-20230605140528743.png)]

构建触发器

点击【构建触发器】–【构建】–【增加构建步骤】–【调用顶层Maven目标】–【填写配置】–【保存】

此处命令只是install,看是否能生成jar包

clean install -Dmaven.test.skip=true

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-D267iBT7-1685958085796)(D:\soft\Tencent\WeChat\Documents\WeChat Files\WeChat Files\wxid_590kmi1hdcz322\FileStorage\Temp\1685945344146.png)]

保存

点击【保存】按钮即可

测试
该功能测试是否能正常打包

构建

点击构建按钮

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dqGC73Oj-1685958085796)(D:\soft\Tencent\WeChat\Documents\WeChat Files\WeChat Files\wxid_590kmi1hdcz322\FileStorage\Temp\1685945374237.png)]

查看日志

点击正在构建的任务,或者点击任务名称,进入详情页面,查看控制台输出,看是否能成功打成jar包。

该处日志第一次可能下载依赖jar包失败,再次点击构建即可成功。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XXuDaC5o-1685958085797)(D:\soft\Tencent\WeChat\Documents\WeChat Files\WeChat Files\wxid_590kmi1hdcz322\FileStorage\Temp\1685945418635.png)]

查看项目位置

cd /var/jenkins_home/workspace/dream/dream-admin

ls命令即可查看是否存在

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CNciBfR1-1685958085797)(D:\soft\Tencent\WeChat\Documents\WeChat Files\WeChat Files\wxid_590kmi1hdcz322\FileStorage\Temp\1685945472473.png)]

运行项目

因为我们项目和jenkins在同一台服务器,所以我们用shell脚本运行项目,原理既是通过dockerfile 打包镜像,然后docker运行即可。

Dockerfile

在springboot项目根目录新建一个名为Dockerfile的文件,注意没有后缀名,其内容如下:(大致就是使用jdk8,把jar包添加到docker然后运行prd配置文件)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-H9GTd4Og-1685958085797)(D:\soft\Tencent\WeChat\Documents\WeChat Files\WeChat Files\wxid_590kmi1hdcz322\FileStorage\Temp\1685946174681.png)]

修改jenkins任务配置
-t:指定新镜像名
.:表示Dockfile在当前路径
cd /var/jenkins_home/workspace/dream/dream-admin
docker stop dream-admin || true
docker rm dream-admin || true
docker rmi dream-admin:1.0 || true
docker build -t dream-admin:1.0 .
docker run -it -d --name dream-admin -p 8080:8080 \
-e  TZ="Asia/Shanghai" \
-v /home/ruoyi/logs/:/home/ruoyi/logs/  \
-e JVM_OPTS="-Dname=%AppName%  -Xms512m -Xmx1024m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=512m -XX:+HeapDumpOnOutOfMemoryError -XX:+PrintGCDateStamps  -XX:+PrintGCDetails -XX:NewRatio=1 -XX:SurvivorRatio=30 -XX:+UseParallelGC -XX:+UseParallelOldGC" \
 dream-admin:1.0

jenkins 没有执行docker的 解决方法

docker run -d \
-u root \
--name jenkins \
--privileged=true \
--restart=always \
-p 8888:8080 \
-p 50000:50000 \
-v jenkins-data:/var/jenkins_home \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /usr/bin/docker:/usr/bin/docker \
jenkins/jenkins

vorRatio=30 -XX:+UseParallelGC -XX:+UseParallelOldGC"
dream-admin:1.0




jenkins 没有执行docker的 解决方法

docker run -d
-u root
–name jenkins
–privileged=true
–restart=always
-p 8888:8080
-p 50000:50000
-v jenkins-data:/var/jenkins_home
-v /var/run/docker.sock:/var/run/docker.sock
-v /usr/bin/docker:/usr/bin/docker
jenkins/jenkins


  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Docker、Jenkins、GitLab、Maven、Harbor和Spring Boot是一些常用的IT工具和技术,可以用于实现自动化构建和部署Docker是一个开源的容器化平台,可以将应用程序及其依赖项打包到容器中,从而实现应用程序的快速部署和隔离。使用Docker可以方便地创建、分享和管理应用程序的容器化版本。 Jenkins是一个开源的持续集成和持续交付工具,可以帮助团队自动化构建、测试和部署应用程序。使用Jenkins可以通过配置和管理各种构建和部署任务,从而实现自动化的软件开发流程。 GitLab是一个基于Git的代码托管和协作平台,可以帮助团队协同开发、管理代码和进行版本控制。使用GitLab可以方便地管理代码仓库、进行代码审查和版本管理。 Maven是一个软件项目管理和构建工具,可以帮助团队自动化构建、测试和部署Java项目。使用Maven可以方便地管理项目依赖、编译代码、运行单元测试等构建任务。 Harbor是一个开源的企业级Docker镜像仓库,用于管理和存储Docker镜像。使用Harbor可以方便地管理镜像的推送、拉取和版本控制。 Spring Boot是一个轻量级的Java开发框架,可以帮助开发者快速构建和部署基于Spring的应用程序。使用Spring Boot可以简化项目配置和管理,提高开发效率。 将这些工具结合使用,可以实现自动化构建和部署。例如,可以使用Jenkins配置一个定时任务,当代码提交到GitLab时,Jenkins会自动触发构建任务。构建任务可以使用Maven编译、打包和测试应用程序,然后使用Docker将应用程序打包成容器镜像,并推送到Harbor中。最后,使用Docker将应用程序部署到服务器上进行运行。这样,我们就可以实现应用程序的自动化构建和部署,提高开发和交付效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值