使用Docker部署Jenkins

使用Docker部署Jenkins
LCG使用Docker部署Jenkins
技术支持
在本篇文章中需要用到的软件支持如下:
- Docker:标题上有说使用Docker部署,所以Docker必然不可缺少,没有了解的话,可以看下博客中的Docker那篇文章,你的服务器上没有安装Docker的话是无法进行安装Jenkins操作的。
- Maven:这个是部署Java项目所需要的,如果你要部署的项目不是,可以忽略。
- JDK:这个是部署Java项目所需要的,如果你要部署的项目不是,可以忽略。
- NodeJs:这个是部署前端项目所有需要的,如果你要部署的项目不是,可以忽略。我这里用的是nvm下载的nodejs,你们也可以选择直接下载nodejs。
拉取镜像
首先打开DockerHub搜索你想要的镜像,这里直接搜索 Jenkins,这里打不开就上点魔法。
进入后,可以直接点击复制命令,然后到你的服务器拉取镜像即可。值得注意的是,现在的新版Jenkins已经不支持JDK8版本了,所以你可能要自行下载JDK的高版本,推荐 11 17 21的长期支持版本。
当然还有个更好的办法,可以直接选择携带JDK版本的镜像直接使用,这里我选择的是JDK7的版本。该版本中本身携带了JDK17和GIT,非常方便。版本选择如下:
接下来把你复制的命令直接到你的服务器,直接运行即可。
等他下载完成,可以使用查看镜像命令查看镜像
1 | docker images |
准备工作
我要部署的是Java项目,所以我要准备maven,如果你的项目用不到,可以跳过本步骤
配置Maven
打开Maven官网 进行下载
下载完成后,手动上传到你的服务器
解压压缩包:
1 | tar -zxvf 压缩包名称 |
配置环境变量,直接在编辑文件 /etc/profile
添加配置
1 | # maven 环境变量 |
配置完成后,你可以通过下面的命令查看maven的版本,如果正常出现版本号则是正常。如果提示你没有JDK环境则是要配置JDK环境。
1 | mvn -v |
我这里没有单独安装jdk,我直接使用的是Jenkins内部的jdk 把jdk挂载出来以后 配置到本机上配置环境变量即可。你们也可以自己单独安装下JDK,这里就不再赘述了,直接展示下jdk配置就好了。
注意:如果你也想使用Jenkins内部的jdk拿来用,你要先启动容器,在进行配置全局变量。
1 | # jenkins 内部的JDK17 |
启动容器
下面这里是我使用docker-compose启动容器的脚本。
1 | version: '3' |
启动完成后,可以查看下容器的状态:
1 | docker ps |
配置Jenkins
启动没问题以后,你就可以直接打开你的Jenkins了,访问地址就是你服务器ip:你设置的端口
,如果进不去,请自行检查你的Jenkins是否启动成功,和你服务器的防火墙。
- 进来后的也买你如下:
- 按照他的要求去找到密码即可,因为启动的时候,我已经把这个数据文件夹挂载出来了,所以直接到数据卷中查找即可。
1 | 查看所有数据卷 |
找到Jenkins数据的数据卷:
查看数据卷的地址,进入找到对应的密码:
1 | 查看数据卷的信息 |
这是我查看密码的步骤:
- 复制你的密码到浏览器的Jenkins中,进行下一步
- 安装推荐的插件
安装完成之后,创建你的账号即可:
至此你的Jenkins就安装好了,至于具体的配置本篇文章就不在赘述了:
遇到的BUG
Maven依赖下载权限不足
在构建项目的时候需要下载maven依赖,会出现如下的问题:
这个问题是由于你设置的maven本地仓库的权限问题。容器内部的权限等级没有这么高,而你如果是管理员创建的仓库文件夹,就会导致 容器内部下载的依赖无法写入导致问题。
解决方案:直接在你的宿主机,设置本地仓库的权限,让其他人员也能写入即可。
构建Docker镜像权限不足
使用DockerFile构建你的项目镜像的时候,报错提示:
类似这种就是你的Jenkins容器中的Docker权限不足,因为之前的Docker是挂载进去的,容器呢不没有这么高的权限导致无法构建项目。
解决方案:在你的宿主机内,设置docker.socket的权限。
1 | chmod -R 777 /var/run/docker.sock |
设置完再去运行你的流水线。