分布式电商项目——16.基于Docker+Jenkins实现自动化部署

参考文档:https://blog.youkuaiyun.com/ming19951224/article/details/80958761
https://blog.youkuaiyun.com/cdszdd8/article/details/89465410
https://www.cnblogs.com/jimw/p/10251309.html

ps.该文章是将所有的项目都部署在一个docker的jenkins下的方法,但是在实际的开发中不同的项目往往在不同的服务器上就需要你去增加相应的配置了。
参考文章:https://www.cnblogs.com/yueshutong/p/10214668.html

传统部署与自动化部署

使用Jenkins与Git自动化部署原理

使用码云搭建Git代码存储仓库

https://gitee.com/login
1.使用码云创建私有私有git仓库
2.将本地springboot项目上传到git仓库中

基于Docker安装Jenkins环境

1.使用docker 安装jenkins

docker run -p 8080:8080 -p 50000:50000 -v jenkins_data:/var/jenkins_home jenkinsci/blueocean 

2.访问jenkins地址 8080
在这里插入图片描述

注意:第一次启动的时候正在加载jenkins大概会等待3-10分钟。
3.解锁jenkins
在这里插入图片描述
docker exec -it 7f485bd95c3b /bin/bash 进入jenkins容器
cat /var/jenkins_home/secrets/initialAdminPassword
在这里插入图片描述
在这里插入图片描述
大概需要等待3-10分钟

创建新的用户
在这里插入图片描述
在这里插入图片描述

Jenkins全局工具配置

进入到jenkins容器中 echo $JAVA_HOME 获取java环境安装地址

JDK环境安装

在这里插入图片描述

Maven环境安装

在这里插入图片描述

安装Jenkins对应Maven插件

找到 “系统管理“ - “安装插件” ,点击 “可选插件”,找到如下maven插件的版本
插件名称 Maven Integration
在这里插入图片描述
在这里插入图片描述

Jenkins实现Springboot项目自动部署

1.新建一个发布任务
在这里插入图片描述
2. 配置任务git账号密码
在这里插入图片描述

3.项目打包
在这里插入图片描述

clean install
3.点击立即构建
在这里插入图片描述
第一次构建可能耗时比较长,因为需要下载一些相关依赖jar包
在这里插入图片描述

Jenkins启动成功之后执行shll脚本
在这里插入图片描述

(不推荐使用 应为项目启动完成后会有转圈)

#!/bin/bash
#服务名称
SERVER_NAME=mayikt_springboot
# 源jar路径,mvn打包完成之后,target目录下的jar包名称,也可选择成为war包,war包可移动到Tomcat的webapps目录下运行,这里使用jar包,用java -jar 命令执行  
JAR_NAME=mayikt_springboot-0.0.1-SNAPSHOT
# 源jar路径  
#/usr/local/jenkins_home/workspace--->jenkins 工作目录
#demo 项目目录
#target 打包生成jar包的目录
JAR_PATH=/var/jenkins_home/workspace/mayikt_springboot/target
# 打包完成之后,把jar包移动到运行jar包的目录--->work_daemon,work_daemon这个目录需要自己提前创建
JAR_WORK_PATH=/var/jenkins_home/workspace/mayikt_springboot/target

echo "查询进程id-->$SERVER_NAME"
PID=`ps -ef | grep "$SERVER_NAME" | awk '{print $2}'`
echo "得到进程ID:$PID"
echo "结束进程"
for id in $PID
do
	kill -9 $id  
	echo "killed $id"  
done
echo "结束进程完成"

#复制jar包到执行目录
echo "复制jar包到执行目录:cp $JAR_PATH/$JAR_NAME.jar $JAR_WORK_PATH"
cp $JAR_PATH/$JAR_NAME.jar $JAR_WORK_PATH
echo "复制jar包完成"
cd $JAR_WORK_PATH
#修改文件权限
chmod 755 $JAR_NAME.jar

java -jar $JAR_NAME.jar

转圈现象

在这里插入图片描述

Jenkins启动SpringBoot后,停止转圈(推荐使用,不会有转圈)

将springboot启动方式设置为后台启动即可

#!/bin/bash
#服务名称
SERVER_NAME=mayikt_springboot
# 源jar路径,mvn打包完成之后,target目录下的jar包名称,也可选择成为war包,war包可移动到Tomcat的webapps目录下运行,这里使用jar包,用java -jar 命令执行  
JAR_NAME=meitedu_springboot-0.0.1-SNAPSHOT
# 源jar路径  
#/usr/local/jenkins_home/workspace--->jenkins 工作目录
#demo 项目目录
#target 打包生成jar包的目录
JAR_PATH=/var/jenkins_home/workspace/meitedu_springboot/target/
# 打包完成之后,把jar包移动到运行jar包的目录--->work_daemon,work_daemon这个目录需要自己提前创建
JAR_WORK_PATH=/var/jenkins_home/workspace/meitedu_springboot/target/

echo "查询进程id-->$SERVER_NAME"
PID=`ps -ef | grep "$SERVER_NAME" | awk '{print $2}'`
echo "得到进程ID:$PID"
echo "结束进程"
for id in $PID
do
	kill -9 $id  
	echo "killed $id"  
done
echo "结束进程完成"

#复制jar包到执行目录
echo "复制jar包到执行目录:cp $JAR_PATH/$JAR_NAME.jar $JAR_WORK_PATH"
cp $JAR_PATH/$JAR_NAME.jar $JAR_WORK_PATH
echo "复制jar包完成"
cd $JAR_WORK_PATH
#修改文件权限
chmod 755 $JAR_NAME.jar
BUILD_ID=dontKillMe nohup java -jar  $JAR_NAME.jar  &

容器映射8081端口

1.重启容器

systemctl restart  docker

2.清空未运行的容器

docker rm $(sudo docker ps -a -q)

3.-p是将内部的端口映射到外部,8080是jenkins的映射
8081是将应用程序端口,映射到外部,如果你想增加,你就多一个-p

docker run -p 8080:8080   -p 8081:8081   -p 50000:50000 -v jenkins_data:/var/jenkins_home jenkinsci/blueocean

最主要是思路 灰度发布

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值