Docker搭建Jenkins并部署SpringCloud服务
前言
本次所安装Jenkin和发布SpringCloud,需要用到如下工具:
Centos7,docker,docker-compose,harbor,jdk1.8,mvn3.5.4等;这里只讲述Docker部署Jenkins并发布SpringCloud服务
Docker安装Jenkins
新建docker-compose.yaml文件
version: '3'
services:
jenkins-server:
image: jenkins/jenkins:lts
hostname: jenkins-server
container_name: jenkins-server
restart: always
ports:
- 8080:8080
volumes:
- ./jenkins/data:/var/jenkins_home
- ./jenkins/war:/usr/share/jenkins/
- /usr/local/jdk1.8.0_311:/usr/local/jdk1.8.0_311
- /usr/local/apache-maven-3.8.4:/usr/local/apache-maven-3.8.4
- /home/mavenHome:/home/mavenHome
networks:
dell-net:
ipv4_address: 172.19.0.18
# 自定义网段
networks:
dell-net:
ipam:
config:
- subnet: 172.19.0.0/24
注意:
volumes:
分别将jenkins_home,jenkins启动war包,宿主机jdk,mvn,mvn本地仓库挂载在上述的目录当中,原因是容器内部安装各种环境很麻烦,而且有网速限制,所以直接宿主机装好后挂载;
我的宿主机目录jenkins在home目录下面,所以这里的docker-compose.yaml也在**home目录下,和jenkins**目录同一级
我这里挂载war包路径的目的是后期如果Jenkins有更新,直接将war包放在宿主机的war目录即可;
运行docker-compose,启动Jenkins
cd /home/
# 启动,如果docker-compose只有一个服务可不加-d后面的服务名称
docker-compose up -d jenkins-server
注意:
启动时注意看一下Jenkins的启动日志,因为Jenkins是用jenkins账户启动的,所以又可能会权限不足,这个时候只需要将宿主机的jenkins和maven本地仓库权限放开就行了;
chmod 777 /home/jenkins/ chmod 777 /home/mavenHome/
Jenkins配置
- Jenkins安装好以后,浏览器访问http://127.0.0.1:8080,即可看见Jenkins的初始化界面,按照新手操作就行了;账号可以自己创建,也可以用默认的admin;
- 配置好后就可以进入主界面,下面是我已经配置好的三个任务,分别发布后端,前端,和管理一些中间件的启动;
- 到此Jenkins就已经通过Docker安装好了,接下来就是配置自己的任务了;
Jenkins部署SpringCloud
所需插件
主界面点击->新建任务->选择maven项目
代码我是放在码云上面的,这里需要添加码云的全局凭据
打包镜像到harbor
#!/bin/bash
# 我在工程目录的target目录下新建了一个服务文件夹,并将代码工程目录下的Dockerfile和target里面的jar包移动到该服务文件夹下面,方便docker打包镜像
DOCKERFILE=${WORKSPACE}/target/${module_name}
mkdir ${DOCKERFILE}
if [ ${module_name} == 'system' ]; then
cd ${WORKSPACE}/service/${module_name}/
elif [ ${module_name} == 'resources' ]; then
cd ${WORKSPACE}/plugins/${module_name}/
else
cd ${WORKSPACE}/${module_name}/
fi
cp Dockerfile ${DOCKERFILE}/
cd ${WORKSPACE}/target/
cp ${module_name}.jar ${DOCKERFILE}/
远程执行命令,启动服务
#!/bin/bash
echo '--------------停止并删除'${module_name}'------------------'
docker stop ${module_name} && docker rm ${module_name}
echo '--------------开始构建'${module_name}'------------------'
# 这里是我将docker-compose.yml放在了代码里,代码拉下来就在Jenkins的工作目录里(当前任务目录),所以这里我直接执行就ok
# 如果没有,可以自定义下面的docker脚本
cd /home/jenkins/data/workspace/cloud/script
docker-compose up -d ${module_name}