自学内容网 自学内容网

使用Docker部署Jenkins(Java版)

使用Docker部署Jenkins

技术支持

在本篇文章中需要用到的软件支持如下:

  • Docker:标题上有说使用Docker部署,所以Docker必然不可缺少,没有了解的话,可以看下博客中的Docker那篇文章,你的服务器上没有安装Docker的话是无法进行安装Jenkins操作的。
  • Maven:这个是部署Java项目所需要的,如果你要部署的项目不是,可以忽略。
  • JDK:这个是部署Java项目所需要的,如果你要部署的项目不是,可以忽略。
  • NodeJs:这个是部署前端项目所有需要的,如果你要部署的项目不是,可以忽略。我这里用的是nvm下载的nodejs,你们也可以选择直接下载nodejs。

1. 拉取镜像

首先打开DockerHub搜索你想要的镜像,这里直接搜索 Jenkins,这里打不开就上点魔法。

image-20240507172301632

进入后,可以直接点击复制命令,然后到你的服务器拉取镜像即可。值得注意的是,现在的新版Jenkins已经不支持JDK8版本了,所以你可能要自行下载JDK的高版本,推荐 11 17 21的长期支持版本。

image-20240507172448440

当然还有个更好的办法,可以直接选择携带JDK版本的镜像直接使用,这里我选择的是JDK7的版本。该版本中本身携带了JDK17和GIT,非常方便。版本选择如下:

image-20240507173026393

接下来把你复制的命令直接到你的服务器,直接运行即可。

image-20240508085954853

等他下载完成,可以使用查看镜像命令查看镜像

docker images

image-20240508094035555

2. 准备工作

我要部署的是Java项目,所以我要准备maven,如果你的项目用不到,可以跳过本步骤

2.1 配置Maven

打开Maven官网 进行下载

image-20240508094917955

下载完成后,手动上传到你的服务器

image-20240508095027355

解压压缩包:

tar -zxvf 压缩包名称

配置环境变量,直接在编辑文件 /etc/profile 添加配置

# maven 环境变量
export MAVEN_HOME=/export/maven/apache-maven-3.9.6
export PATH=$MAVEN_HOME/bin:$PATH

配置完成后,你可以通过下面的命令查看maven的版本,如果正常出现版本号则是正常。如果提示你没有JDK环境则是要配置JDK环境。

mvn -v

我这里没有单独安装jdk,我直接使用的是Jenkins内部的jdk 把jdk挂载出来以后 配置到本机上配置环境变量即可。你们也可以自己单独安装下JDK,这里就不再赘述了,直接展示下jdk配置就好了。

**注意:**如果你也想使用Jenkins内部的jdk拿来用,你要先启动容器,在进行配置全局变量。

# jenkins 内部的JDK17
export JAVA_HOME=/var/lib/docker/volumes/jenkins_jenkins-jdk17/_data
export PATH=$JAVA_HOME/bin:$PATH

3. 启动容器

下面这里是我使用docker-compose启动容器的脚本。

version: '3'

volumes:
  jenkins-data:
  jenkins-jdk17:

services:
  jenkins:
    image: jenkins/jenkins:latest-jdk17
    # 以特权模式运行容器,允许容器内的进程拥有宿主机上的所有权限。这可以用来执行一些需要更高权限级别的操作
    privileged: true
    volumes:
    # 这里是Jenkins的数据存储位置
      - jenkins-data:/var/jenkins_home
      # 把Jenkins内部自带的jdk拿出来用
      - jenkins-jdk17:/opt/java/openjdk
      # 把maven映射到容器内部
      - /export/maven/apache-maven-3.9.5:/usr/local/maven
      # nodejs映射到容器内部
      - /export/nvm/nvm-0.39.5/versions/node/v14.21.3:/usr/local/nodejs
      # Docker套接字文件挂载到容器中,容器中可以与宿主机中docker通信
      - /var/run/docker.sock:/var/run/docker.sock
      # 可以使用和管理宿主机上的Docker引擎
      - /usr/bin/docker:/usr/bin/docker
    ports:
      - 8080:8080
      - 50000:50000
    container_name: jenkins
    mem_limit: 800m # 内存最大为800MB
    restart: "always"

启动完成后,可以查看下容器的状态:

docker ps

4. 配置Jenkins

启动没问题以后,你就可以直接打开你的Jenkins了,访问地址就是你服务器ip:你设置的端口,如果进不去,请自行检查你的Jenkins是否启动成功,和你服务器的防火墙。

  1. 进来后的也买你如下:

image-20240508105116423

  1. 按照他的要求去找到密码即可,因为启动的时候,我已经把这个数据文件夹挂载出来了,所以直接到数据卷中查找即可。
# 查看所有数据卷
docker volume ls

找到Jenkins数据的数据卷:

image-20240508105328865

查看数据卷的地址,进入找到对应的密码:

 # 查看数据卷的信息
 docker volume inspect jenkins_jenkins-data

image-20240508105519936

这是我查看密码的步骤:

image-20240508105700192

  1. 复制你的密码到浏览器的Jenkins中,进行下一步
  2. 安装推荐的插件

image-20240508105832124

安装完成之后,创建你的账号即可:

image-20240508110539432

至此你的Jenkins就安装好了,至于具体的配置本篇文章就不在赘述了:

image-20240508110649479

5. 遇到的BUG

5.1 Maven依赖下载权限不足

在构建项目的时候需要下载maven依赖,会出现如下的问题:

image-20240508144907786

image-20240508144921187

这个问题是由于你设置的maven本地仓库的权限问题。容器内部的权限等级没有这么高,而你如果是管理员创建的仓库文件夹,就会导致 容器内部下载的依赖无法写入导致问题。

解决方案:直接在你的宿主机,设置本地仓库的权限,让其他人员也能写入即可。

5.2 构建Docker镜像权限不足

使用DockerFile构建你的项目镜像的时候,报错提示:

image-20240508160111846

类似这种就是你的Jenkins容器中的Docker权限不足,因为之前的Docker是挂载进去的,容器呢不没有这么高的权限导致无法构建项目。

解决方案:在你的宿主机内,设置docker.socket的权限。

chmod -R 777 /var/run/docker.sock

设置完再去运行你的流水线。

image-20240508160400118


原文地址:https://blog.csdn.net/m0_63684495/article/details/139003471

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!