docker pull jenkins/jenkins2、新建文件夹,用来挂载docker目录
mkdir -pv /var/jenkins_home
添加修改权限(这一步非常重要!这一步非常重要!这一步非常重要!)
chown -R 1000 /var/jenkins_home3、启动jenkins
docker run --name jenkins -p 8088:8080 -p 50000:50000 --restart=always -u root -v /var/run/docker.sock:/var/run/docker.sock -v $(which docker):/bin/docker -v /usr/lib64/libltdl.so.7:/usr/lib/x86_64-linux-gnu/libltdl.so.7 -v /var/lib/docker/tmp:/var/lib/docker/tmp -v /var/jenkins_home:/var/jenkins_home -d jenkins/jenkins
启动命令解析
--restart=always #Docker重启后该容器也为随之重启 -u root #以root的身份去运行镜像(避免在容器中调用Docker命令没有权限) #最好使用docker用户去运行 -v $(which docker):/bin/docker #将宿主机的docker命令挂载到容器中 #可以使用which docker命令查看具体位置 -v /var/run/docker.sock:/var/run/docker.sock #容器中的进程可以通过它与Docker守护进程进行通信 -v /usr/lib64/libltdl.so.7:/usr/lib/x86_64-linux-gnu/libltdl.so.7 #libltdl.so.7是Docker命令执行所依赖的函数库 #容器中library的默认目录是 /usr/lib/x86_64-linux-gnu/ #把宿主机的libltdl.so.7 函数库挂载到该目录即可 #可以通过whereis libltdl.so.7命令查看具体位置 #centos7位置/usr/lib64/libltdl.so.7 #ubuntu位置/usr/lib/x86_64-linux-gnu/libltdl.so.7 -v /var/jenkins_home:/var/jenkins_home #将运行的docker镜像目录挂载到本地的/var/jenkins_home3、进入jenkins容器查看密码
#第一步:进入容器 docker exec -it jenkins /bin/bash #第二步:查看能否使用宿主机的docker命令(如果命令运行成功切显示版本信息则成功) docker -v #第三步:查看密码 cat /var/jenkins_home/secrets/initialAdminPassword4、安装插件
Maven Integration
GitLab
ssh
5、配置全局变量 6、配置全局工具 6.1、配置jdk这里采用自动安装,因为jenkins自带的jdk版本是11的,我用jdk8
这里需要账号,可以在网上自己找一个,我找的这里就不贴上去了
6.2、配置git路径在容器内继续输入which git,并配置git路径
which git6.3、配置maven 7、自动构建springBoot项目 注意注意!!!!这个一定要注意,必须在你创建的springBoot项目里面配置docker构建插件!不然后面脚本运行的docker build命令是没法把镜像上传到指定服务器的!!!
如下图
现在可以在jenkins新建项目了
1、选择maven
2、确认之后配置git仓库
3、配置打包命令
4、脚本
1)部署到jenkins所在的服务器添加构建完成之后执行的shell命令
脚本1(这个是git里面没有配置dockerFile的,脚本自动配置dockerfile)
#!/bin/bash #1.2.3.4需要根据不同项目修改不同值 #1.服务名称 SERVER_NAME=tool-test #2.启动dev配置文件 CONFIG_NAME=dev #3.源jar路径,mvn打包完成之后,target目录下的jar包或jar包名称(包含后缀) JAR_NAME=tools.jar #4.端口 PORT=9002 # 源jar路径 #/usr/local/jenkins_home/workspace--->jenkins 工作目录 #demo 项目目录 #target 打包生成jar包的目录 JAR_PATH=/var/jenkins_home/workspace/$SERVER_NAME/target #创建createImages和demo文件夹 mkdir -pv /var/jenkins_home/createImages/$SERVER_NAME #在demo文件夹下创建Dockerfile文本文件 touch /var/jenkins_home/createImages/$SERVER_NAME/Dockerfile #写入Dockerfile cat >>/var/jenkins_home/createImages/$SERVER_NAME/Dockerfile<2)部署到jenkins不同的服务器 ①配置用户凭证/etc/timezone ADD $JAR_NAME $SERVER_NAME ENTRYPOINT ["java","-jar","$SERVER_NAME","--spring.profiles.active=$CONFIG_NAME"] EOF # 打包完成之后,把jar包移动到创建Docker镜像的目录(此目录包含Dockerfile文件)--->createImages,demo这两个目录需要自己提前创建(上面已经提前创建了) JAR_WORK_PATH=/var/jenkins_home/createImages/$SERVER_NAME echo "清理$SERVER_NAME的容器" containerId=$(docker ps -a | grep -w tools | awk '{print $1}') if [ -n "$containerId" ]; then docker stop $containerId docker rm $containerId echo "成功停止、删除容器" fi imageld=$(docker images | grep -w tools | awk '{print $3}') if [ -n "$imageld" ]; then docker rmi -f $imageld echo "成功删除镜像" fi echo "停止并清除镜像完成,进入创建新镜像过程" echo "复制jar包到/createImages/demo目录下" #复制jar包到/createImages/demo目录下 cp $JAR_PATH/$JAR_NAME $JAR_WORK_PATH #切换到demo创建镜像文件夹目录下 cd $JAR_WORK_PATH #修改文件权限 chmod 755 $JAR_NAME echo "执行命令创建新镜像" #执行docker创建镜像命令 docker build -t $SERVER_NAME . #删除Dockerfile文本文件 rm /var/jenkins_home/createImages/$SERVER_NAME/Dockerfile #运行镜像 docker run -d -p $PORT:$PORT --restart=always -u root --name $SERVER_NAME $SERVER_NAME echo "运行新镜像,流程完毕,端口号为:$PORT"
依次点击以下视图内容
②编辑脚本(这里一共有3块命令,都在脚本2里面)
脚本2#远程服务器执行
containerId=$(docker ps -a | grep -w tools | awk '{print $1}')
if [ -n "$containerId" ];
then
docker stop $containerId
docker rm $containerId
echo "成功停止、删除容器"
fi
imageld=$(docker images | grep -w tools | awk '{print $3}')
if [ -n "$imageld" ];
then
docker rmi -f $imageld
echo "成功删除镜像"
fi
#打包并构建docker镜像 mvn clean package docker:build
# 远程服务器执行 docker run -d -p 9002:9002 --restart=always -u root --name tools tools8、启动
构建的时候只需要点击项目名称->立即构建就可以自动运行之前配置的脚本了(也可以直接点击右边的绿色三角图标构建,后面再把前端VUE的构建脚本贴上)



