基于Jenkins+Gitee实现SpringBoot项目自动化部署(Docker版)
前言:
上一篇笔记:基于Jenkins+Gitee实现SpringBoot项目自动化部署(非Docker版)。
本篇笔记介绍一下Docker版本的Jenkins如何实现项目自动化部署。
本案例基于Linux CentOS 7服务器,防火墙开放8080端口(Jenkins使用),80端口(项目使用),云服务器直接在控制台配置安全规则即可。
1. 创建一个简单的SpringBoot项目,并提交到Gitee远程仓库
这里我直接使用上篇笔记的demo,名称为hello-jenkins
GitHub使用类似,这里使用Gitee作为代码托管平台
2. 服务器安装Docker(社区版docker-ce)
yum 包更新到最新
yum update
卸载旧版本(如果安装过旧版本的话)
yum remove docker docker-common docker-selinux docker-engine
安装需要的软件包
yum install -y yum-utils device-mapper-persistent-data lvm2
设置yum源
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
安装docker
yum install docker-ce
启动并设置开机自启
systemctl start docker
systemctl enable docker
验证安装是否成功
docker version
配置阿里云镜像仓库
在阿里云官网注册登录,搜索容器镜像服务,进入控制台,复制如下命令执行,注意替换xxxx为自己的镜像源
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://xxxx.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
至此Docker安装完成。
3. docker 安装 Jenkins
拉取2.346.1版本Jenkins镜像
docker pull jenkins/jenkins:2.346.1
启动容器
docker run --name jenkins -u root --rm -d -p 8080:8080 -p 50000:50000 -v /var/jenkins_home:/var/jenkins_home -v /var/run/docker.sock:/var/run/docker.sock -v $(which docker):/usr/bin/docker jenkins/jenkins:2.346.1
-v /var/jenkins_home:挂载Jenkins主工作目录
-v /var/run/docker.sock:/var/run/docker.sock -v $(which docker):/usr/bin/docker:挂载docker运行变量到容器,否则无法在容器内使用docker命令
启动成功后通过ip:8080访问,根据页面提示查看默认密码。
下一步,选择推荐安装的插件
最后,自定义一个管理员账号,即可开始使用Jenkins
4. Jenkins配置
下载可选插件
首先在插件管理->高级 配置插件升级站点URL为阿里镜像源:https://mirrors.aliyun.com/jenkins/updates/update-center.json
在可选插件安装 Maven Integration
安装 Gitee
如果需要远程推送,需要安装 Publish Over SSH,这里服务部署和Jenkins在同一台服务器,故不用安装。
全局工具配置
Docker运行的Jenkins自带JDK11和Git,可以通过命令查看版本及安装目录,如果希望使用其他版本JDK或Git,可以在全局配置里勾选自动安装,但是安装JDK需要填写Oracle账号,且下载速度慢,我们可以自己上传到宿主机挂载的jenkins_home目录,在全局配置里配置HOME即可。
示例这里我们使用自定义的JDK8和Maven3.6.3。
先上传两个安装包到宿主机挂载的jenkins_home/app目录、解压
不需要配置环境变量,但需要给Maven配置阿里云镜像仓库
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
在全局工具配置中,配置我们自定义的JDK和Maven。
Maven的setting.xml路径
JDK安装,配置JAVA_HOME,取消勾选自动安装
Maven安装,配置MAVEN_HOME,取消勾选自动安装
Git安装保持默认即可,点击保存。
系统配置
在系统配置中配置Gitee链接,根据提示获取access_tokens,该令牌只展示一次,注意保存。
添加完成后可以点击 测试链接,出现成功则说明配置成功。
新建一个自由风格任务
任务名称为hello-jenkins
选择源码管理->Git,填写Gitee仓库地址,分支默认master
点击添加凭证,填写Gitee用户名密码
Credentials选择添加的Gitee凭证,报错消失
点击构建选项,配置Maven执行以及Shell命令
Shell如下,注意根据个人需求修改路径和端口
cd /var/jenkins_home/workspace/hello-jenkins
docker stop hello-jenkins || true
docker rm hello-jenkins || true
docker rmi hello-jenkins || true
docker build -t hello-jenkins .
docker run -d -p 80:80 --name hello-jenkins hello-jenkins:latest
点击保存,Jenkins任务配置完成。
打开本地项目,在根目录新建Dockerfile文件,写入以下内容,提交到远程仓库
# 基础镜像
FROM openjdk:8
# 维护人
MAINTAINER zxin<zxin@jenkins.com>
# 创建目录
RUN mkdir -p /home/app
# 拷贝项目jar
COPY target/hello-jenkins.jar /home/app/hello-jenkins.jar
# 执行命令启动jar
ENTRYPOINT ["java","-jar","/home/app/hello-jenkins.jar"]
# 暴露端口
EXPOSE 80
5. 运行
点击立即构建,可以看到,依赖从我们配置的自定义版本Maven仓库下载
等待构建完成,我们的hello-jenkins项目镜像创建成功,容器成功运行
使用docker ps查看运行的容器
访问ip(默认端口80)访问项目,应输出Hello, Docker!
至此,基于Jenkins+Gitee实现SpringBoot项目自动化部署的目标顺利完成。