docker jenkins + springboot + maven + svn 实现热部署

docker环境安装
jdk环境安装,配置环境变量
maven环境安装,配置环境变量

1、前往maven官网,下载maven安装包,官网地址为http://maven.apache.org/download.cgi,

docker 热重载 docker 热部署_jar


2、创建maven目录,

mkdir maven

3、进入maven目录,
cd maven

4、上传到服务器,
rz

5、进行压缩,
tar -zxvf

6、配置环境变量,
vi /etc/profile
在最下方添加maven环境变量,
export MAVEN_HOME=/data/maven/apache-maven-3.6.3/
export PATH=$PATH:/data/maven/apache-maven-3.6.3/bin

7、重新加载配置文件,
source /etc/profile

8、查看maven环境变量是否成功,
echo $MAVEN_HOME

jenkin安装

1、docker下载jenkins
docker pull jenkins/jenkins:latest
下载latest版本的jenkins,初次下载时间会久一点,等待下载完成,

2、docker运行jenkins,
docker run -p 8088:8080 -d --name jenkins_dev -v /data/jenkins:/var/jenkins_home -v /usr/java/jdk-11.0.6:/usr/java/jdk-11.0.6 -v /data/maven/apache-maven-3.6.3:/data/maven/apache-maven-3.6.3 -v /data/webroot/apache-tomcat-9.0.41:/data/webroot/apache-tomcat-9.0.41 jenkins/jenkins;latest

命令解析,
-p 是宿主机和容器的端口映射,-p宿主机端口:容器端口,jenkins默认端口为8080所以这里的映射端口需要固定为8080,宿主机端口可随意,
-v 是宿主机和容器的目录映射,这里要把jdk和maven的目录也映射上,否则后续jenkin无法访问,
-d 后台执行,
–name 给docker的jenkins起个名字,

3、复制初始密码,

docker 热重载 docker 热部署_jar_02


4、界面访问jenkins,等待初始化,

url输入,ip:端口,5、安装推荐插件,

docker 热重载 docker 热部署_docker 热重载_03


如果碰到插件安装失败,可以重复几次试试,6、下载svn插件,

docker 热重载 docker 热部署_jar_04


7、配置全局环境,

docker 热重载 docker 热部署_maven_05


8、配置maven环境,

docker 热重载 docker 热部署_docker_06


docker 热重载 docker 热部署_docker_07


取消自动安装,9、配置jdk环境,

docker 热重载 docker 热部署_docker_08


取消掉自动安装,

10、点击保存,

11、配置远程SSH(可选,远程执行shell命令时用到)

下载ssh插件,

docker 热重载 docker 热部署_docker_09

进入配置界面,

docker 热重载 docker 热部署_java_10


新增ssh配置,

docker 热重载 docker 热部署_java_11


点击保存,12、安装maven构建插件,

docker 热重载 docker 热部署_java_12

13、新建项目

docker 热重载 docker 热部署_docker_13


docker 热重载 docker 热部署_jar_14


14、选择svn代码服务器,

docker 热重载 docker 热部署_jar_15


配置svn代码服务器环境,15、配置构建命令,

docker 热重载 docker 热部署_java_16


16、选择构建成功后执行,

docker 热重载 docker 热部署_docker 热重载_17


17、构建成功后,远程执行shell命令,

docker 热重载 docker 热部署_maven_18


18、选择配置的ssh环境,输入shell命令,

这个shell脚本命令是在构建成功后,直接远程杀掉原有jar进程,重新启动,

pid=ps -ef|grep service.jar|grep -v "grep"|awk '{print $2}' echo “Will service.jar: docker 热重载 docker 热部署_docker_19pid” ]
then
kill -9 ${pid}
fi
sleep 2
mv -f /data/service.jar /data/service.jar
BUILD_ID=dontKillMe nohup /usr/java/jdk/bin/java -jar /data/service.jar > /data/log.log 2>&1 &
sleep 15
pid_new=ps -ef| grep service.jar| grep -v "grep"| awk '{print $2}' echo “success service.jar has been started.The new pid is ${pid_new}”

19、点击立即构建,

docker 热重载 docker 热部署_java_20


20、结束,

jenkins碰到的坑,

1、jenkins默认启动端口为8080,要么改配置,要么在docker启动时,映射的容器端口一定得是8080,
2、springboot会把日志反馈到控制台,所以在jenkins启动时,总会认为jar包没有启动结束,会一直卡在启动中,这时候可以在启动命令中,把jar的日志指定输出到某一文件中即可,
nohup java -jar jar包 > log.log 2>& 1 &
3、记得加上BUILD_ID=dontKillMe,不要杀死我,命令,否则jenkins在结束时,会把jar启动命令也杀掉,
4、命令中注意使用绝对路径,否则很可能找不到,