Docker+Jenkins+Git+GitLab

本文环境
Docker Version 19.03.11:https://www.cnblogs.com/niceyoo/p/13096181.html

Maven Version 3.3.9:https://www.cnblogs.com/niceyoo/p/13068935.html

JDK Version 1.8.0_181:https://www.cnblogs.com/niceyoo/p/11483139.html

GitLab:https://www.cnblogs.com/niceyoo/p/13057533.html

Jenkins Version 2.222.4:参考本文

通过本文可以了解哪些
通过Docker部署Jenkins
使用Jenkins一键部署Springboot项目
整合GitLab实现上传代码自动部署项目
如下Jenkins安装及配置过程
1、拉取代码
docker pull jenkins/jenkins:lts
在这里插入图片描述
2、创建并启动容器:
在构建的过程,由于我本身CentOS已经安装JDK、Maven了「可以参考上方的安装链接」,所以在这我就直接指定本地环境变量了,当然,如果你不指定的话,安装完Jenkins后还是可以在全局工具配置中修改的:
docker run --name=jenkins --privileged=true
-u root
–rm
-d
-p 8080:8080
-p 50000:50000
-v /var/run/docker.sock:/var/run/docker.sock
-v /usr/bin/docker:/usr/bin/docker
-v $(which docker):/usr/bin/docker
-v /etc/sysconfig/docker:/etc/sysconfig/docker
-v /usr/java/jdk1.8.0_181:/usr/java/jdk1.8.0_181
-v /home/maven/apache-maven-3.3.9:/usr/local/maven
-v /home/maven/repo:/usr/local/maven_repository
-v /home/jenkins-data:/var/jenkins_home
jenkins/jenkins:lts
在这里插入图片描述
启动后在浏览器输入:http://容器ip:8080 访问。

在这里插入图片描述
管理员密码需要我们在log中查询:
docker logs jenkins

在这里插入图片描述
3、安装推荐的插件
输入密码登陆后,会弹出插件安装提示,我们在这选择安装推荐的插件:

在这里插入图片描述
在这里插入图片描述
4、创建管理员账号
安装之后,接下来创建一个账号:
在这里插入图片描述
进行实例地址配置,该地址将作为将来Jenkins的访问地址:

在这里插入图片描述
至此,保存并完成,会重启Jenkins,然后我们可以通过刚刚创建的账户登录「使用管理员root也可以」:

在这里插入图片描述
5、Maven配置修改
之前我们创建容器时复用了本地宿主机的Maven环境变量,但是安装完Jenkins后还是要指定一下Maven目录的,依次进入:系统管理 > 全局工具配置
在这里插入图片描述
首先是顶部的Maven,我们选择文件系统中的setting文件,文件路径使用创建容器时指定的Maven路径 usr/local/maven:
/usr/local/maven/conf/settings.xml
在这里插入图片描述
然后拉到最下边Maven节点,点击新增Maven,起一个名字,然后指定maven路径,去掉自动安装的选项,然后应用>保存:

在这里插入图片描述
6、新建一个任务
在这里插入图片描述
点击确定之后会跳入配置界面,接下来就是配置我们的自动化操作,首先是配置项目的拉取地址,在这我是基于Gitlab的,关于Gitlab的搭建可以参考这篇:https://www.cnblogs.com/niceyoo/p/13057533.html
在这里插入图片描述
点击添加GitLab的账户密码,不添加时会报红,是没法在GitLab中拉取代码的:

在这里插入图片描述
在这里插入图片描述
#!/bin/bash
result= ( d o c k e r p s ∣ g r e p " 10.211.55.4 : 5000 / n i c e y o o − d e m o " ) i f [ [ " (docker ps | grep "10.211.55.4:5000/niceyoo-demo") if [[ " (dockerpsgrep"10.211.55.4:5000/niceyoodemo")if[["result" != “” ]]
then
echo “stop niceyoo-demo”
docker stop niceyoo-demo
fi
result1= ( d o c k e r p s − a ∣ g r e p " 10.211.55.4 : 5000 / n i c e y o o − d e m o " ) i f [ [ " (docker ps -a | grep "10.211.55.4:5000/niceyoo-demo") if [[ " (dockerpsagrep"10.211.55.4:5000/niceyoodemo")if[["result1" != “” ]]
then
echo “rm niceyoo-demo”
docker rm niceyoo-demo
fi
result2= ( d o c k e r i m a g e s ∣ g r e p " 10.211.55.4 : 5000 / n i c e y o o − d e m o " ) i f [ [ " (docker images | grep "10.211.55.4:5000/niceyoo-demo") if [[ " (dockerimagesgrep"10.211.55.4:5000/niceyoodemo")if[["result2" != “” ]]
then
echo “10.211.55.4:5000/niceyoo-demo:latest”
docker rmi 10.211.55.4:5000/niceyoo-demo:latest
fi

个地方解释一下为啥要用到shel脚本,这个脚本有两个操作,首先是通过 docker ps | grep "10.211.55.4:5000/niceyoo-demo"查询是否存在容器,如果存在的话则stop停止容器,然后再rm删除容器,第二步是通过 docker ps -a | grep "10.211.55.4:5000/niceyoo-demo"查看是否存在该镜像,如果存在则 rmi 删除该镜像,为啥要删除镜像+容器?其实这样是帮助我们把每次自动化构建镜像、容器之前都把旧的给删除掉。

“10.211.55.4:5000/niceyoo-demo” 是我项目打包后的镜像名称,组成规则为:镜像地址/项目名称
在这里插入图片描述
然后添加Maven指令,用于构建项目,简单说一下这个地方,我在项目的 pom.xml,文件中使用了 docker-maven-plugin 插件,同时替换了 mvn pavkage 指令,当每次执行该命令时就会自动提交至Docker远程私有仓库中,「如果在本地执行测试的话需要开启Docker远程访问前提,具体配置可参考该链接:https://www.cnblogs.com/niceyoo/p/13270224.html」,私有仓库是基于Docker+Registry搭建的,关于Registry的搭建可以参考这篇:https://www.cnblogs.com/niceyoo/p/13058238.html
在这里插入图片描述
clean package
如下是SpringBoot项目 pom.xml 文件中的插件编写,已经把注释写的很清楚了:

build>


org.springframework.boot
spring-boot-maven-plugin


com.spotify
docker-maven-plugin
1.0.0


10.211.55.4:5000/ p r o j e c t . a r t i f a c t I d < / i m a g e N a m e > < ! − − 指 定 d o c k e r f i l e 路 径 − − > < ! − − < d o c k e r D i r e c t o r y > {project.artifactId}</imageName> <!--指定dockerfile路径--> <!--<dockerDirectory> project.artifactId</imageName><!dockerfile><!<dockerDirectory>{project.basedir}/src/main/resources–>


latest


10.211.55.4:5000
true

java

niceyoo apkdream@163.com

/ROOT
[“java”,"-version"]
[“java”,"-jar"," p r o j e c t . b u i l d . f i n a l N a m e . j a r " ] < / e n t r y P o i n t > < ! − − 指 定 远 程 d o c k e r 地 址 − − > < d o c k e r H o s t > h t t p : / / 10.211.55.4 : 2375 < / d o c k e r H o s t > < ! − − 这 里 是 复 制 j a r 包 到 d o c k e r 容 器 指 定 目 录 配 置 − − > < r e s o u r c e s > < r e s o u r c e > < t a r g e t P a t h > / R O O T < / t a r g e t P a t h > < ! − − 指 定 需 要 复 制 的 根 目 录 , {project.build.finalName}.jar"]</entryPoint> <!--指定远程docker地址--> <dockerHost>http://10.211.55.4:2375</dockerHost> <!--这里是复制jar包到docker容器指定目录配置--> <resources> <resource> <targetPath>/ROOT</targetPath> <!--指定需要复制的根目录, project.build.finalName.jar"]</entryPoint><!docker><dockerHost>http://10.211.55.4:2375</dockerHost><!jardocker><resources><resource><targetPath>/ROOT</targetPath><!{project.build.directory}表示target目录–>
p r o j e c t . b u i l d . d i r e c t o r y < / d i r e c t o r y > < ! − − 用 于 指 定 需 要 复 制 的 文 件 , {project.build.directory}</directory> <!--用于指定需要复制的文件, project.build.directory</directory><!{project.build.finalName}.jar表示打包后的jar包文件–>
${project.build.finalName}.jar






build-image
package

build






在这里插入图片描述
docker run --rm -d -p 9999:9999 --name niceyoo-demo 10.211.55.4:5000/niceyoo-demo
部分参数解释:在这我用的 -p 9999 端口,–nama 后面指向的是重命名后的容器名称 niceyoo-demo + 镜像的名称 10.211.55.4:5000/niceyoo-demo,接下来就是应用+保存了:
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
DockerJenkinsGitLab都是用于实现高效部署和管理应用程序的开源工具。 首先,Docker是一种容器化技术,它可以将应用程序及其依赖打包成一个独立的运行环境,被称为容器。通过Docker,我们可以轻松地将Python应用程序及其相关依赖包装成一个镜像,然后在任何支持Docker的环境中进行部署。使用Docker进行Python应用程序的部署可以避免环境配置和依赖安装的问题,确保应用程序在不同的环境中的一致性。 其次,Jenkins是一种持续集成和持续交付工具,它可以自动化构建、测试和部署应用程序。在Jenkins中,我们可以配置一个针对Python应用程序的构建和部署流水线。例如,我们可以设置Jenkins在每次代码提交到GitLab时自动触发构建,然后运行单元测试,最后将应用程序部署到Docker容器中。 最后,GitLab是一个Git仓库管理系统,可以帮助团队进行代码版本控制和协作开发。我们可以使用GitLab作为代码仓库,将Python应用程序的源代码存储在其中,并结合Jenkins进行自动化构建和部署。GitLab的特点是具有良好的代码管理和协作功能,可以方便地进行多人开发和代码版本控制。 综上所述,使用DockerJenkinsGitLab可以实现Python应用程序的自动化部署和持续交付。通过将应用程序打包成Docker镜像,结合Jenkins的构建和部署流水线,以及GitLab的代码管理和协作功能,可以大大简化部署过程和团队合作,并提高开发和发布的效率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值