Jenkins的Docker容器安装以及Jenkins配置

本文详细介绍Jenkins镜像的拉取、容器的生成与启动过程,包括初始配置、插件安装及Jenkins中JDK、Git、Maven的配置步骤。同时,文章还介绍了如何设置Jenkins为中文显示,以及如何配置项目触发邮件模板。

前言

建议大家拉取 镜像不要 search 来查看,建议直接去 docker hub 中去找到指定的镜像,再去拉

安装 jenkins 镜像的时候,其实 jenkins 镜像中已经包含了 git,jdk 这两个工具,没有 mvn

jenkins 的新版本镜像是 jenkins/jenkins,其他的是些老版本了,我建议使用 lts,表示长期支持版

Jenkins 镜像拉取

  • jenkins 的 docker 镜像拉取

    # 拉取新的 jenkins 长期支持版
    docker pull jenkins/jenkins:lts
    
    # 查看 docker 拉取到的镜像
    docker images
    

Jenkins 容器生成与启动

  • jenkins 镜像生成容器

    我本人在本地期望的映射地址是服务器地址 /home/jenkins=>容器中地址 /var/jenkins,因为 var 文件目录中存储的常是经常变动的文件内容,如缓存日志等,端口号映射我选择服务器端口 8080=>容器中端口 8080,当然这一点需要特别注意,因为研发的服务器中端口 8080 一般已经被使用了,所以项目上会提供安全可用的端口号给予使用,就选择这些端口号作为服务器端口

    # 生成 jenkins 的 docker 容器
    docker run --name jenkins -p 8080:8080 -v /home/jenkins:/var/jenkins jenkins/jenkins:lts
    
    # 查看已经生成了哪些容器
    docker ps -a
    
    # 查看容器是否在运行
    docker ps
    
  • 启动 jenkins 容器

    # 先检查容器有哪些,不管在不在运行
    docker ps -a
    
    # 检查容器有哪些在运行
    docker ps
    
    # 启动容器
    docker start [容器 id]
    
  • 如果创建的 jenkins 容器有问题,想删除刚创建的容器

    # 若想停止容器
    docker stop [容器 id]
    
    # 若想删除容器,需要先停止容器
    docker rm [容器 id]
    

进入 Jenkins 以及初始操作

  • 进入 jenkins 中

    # 先打开火狐浏览器输入网址再回车,这个 8080 是因为之间配置的映射地址是从服务器的 8080 映射出来的,项目上一般不能用 8080,应选用其他安全未被占用的端口
    localhost:8080
    
    # 刚进入 jenkins 时需要初始密码,这个密码一般在启动 jenkins 容器的控制台中有显示,或者进入 jenkins 容器中去寻找,现在我们先在控制台输入如下命令来进入容器中
    docker exec -u 0 -it [容器 id] /bin/bash
    
    # 输出 jenkins 的密码文件内容并将控制台的密码输入到浏览器中
    cat /var/jenkins_home/secrets/initialAdminPassword
    
    # 之后在其中安装插件可以创建自己的新账号
    
  • jenkins 容器安装插件

    安装插件有两种方式,第一种自动安装必要插件,第二种进行可选择安装,由于我未涉及到移动端,我这里不想装 gradle 等其他插件,我个人选择了自定义安装插件,博友们可以选择第一种自动安装,这里安装比较慢

    安装好后,如果要做 java 的 maven 项目,并且想从 gitlab 或者 github 上拉代码有一些插件几乎是必装的,若是做自动化产出,有一些也是必装的,我这里写下我做 selenium-grid 平台跑代码必装的一些插件,请博友在插件管理里面自行核对

    • Ant Plugin【ant 项目】
    • Oracle Java SE Development Kit Installer Plugin【java】
    • GitHub Branch Source Plugin【github】
    • GitLab Plugin【gitlab】
    • Maven Integration plugin【maven 项目】
    • SSH Slaves plugin【节点机使用 ssh】
    • Subversion
    • Localization: Chinese (simplified)【多语言】
    • Locale plugin【多语言】
    • Email Extension Template Plugin【邮件】

    全部安装好了可以勾选上重启 jenkins,这里会比较慢,很久没有反应可以试着刷新一下页面。

Jenkins 中后续的配置

  • jenkins 设置 jdk,git 以及 mvn

    先进入 jenkins 的全局工具配置中,找到 java,git 以及 maven 配置处

    # jenkins 全局工具配置处我们 jdk 名称我们随便取,我取 jdk1.8
    
    # JAVA_HOME 我写的是 /usr/local/openjdk-8,jenkins 容器中 jdk 默认在 /usr/local/ 下,我们可以先进入 jenkins 容器中查看下容器中的 jdk 在哪,先执行如下命令进入容器
    docker exec -it [容器 id] /bin/bash
    
    # 查看 JAVA_HOME 在哪,默认是 /usr/local/openjdk-8
    echo $JAVA_HOME
    
    # 将获取到的 JAVA_HOME 复制到浏览器中
    
    # 浏览器中 git 的名称我取的是 git2.11,因为我的 jenkins 容器中默认有这个 git
    
    # 在控制台中查看 git 可执行文件路径,同样是先进到容器中,jenkins 的容器中默认是 /usr/bin/git
    which git
    
    # 将容器中可执行文件 git 的路径(一直到 git)拷贝到浏览器中
    
    # 浏览器中 maven 我这里选择勾选 install automatically,并且自己起 maven 名字,选择最新版的 maven
    
    # 最后记得从容器内部出来
    exit
    
  • jenkins 设置成中文显示

    # 进入 jenkins 中配置系统中
    
    # 找到 Locale,Default Language 中填写 zh_CN,然后勾选忽略浏览器和强制将与语言应用于所有用户,这个 Locale 依赖于前面语言插件
    
  • jenkins 中项目出发邮件模板配置

    • 先配置下 Extended E-mail Notification

      我打算配置 smtp 位 qq 的,建议小伙伴们配置成公司企业邮箱号

      # SMTP server SMTP 服务器
      smtp.qq.com
      
      # Default user E-mail suffix 默认用户邮箱后缀
      @qq.com
      
      # 勾选 Use SMTP Authentication 表示使用 SMTP 认证
      
      # User Name 用户,这里填写 qq 号
      123456789
      
      # Password 填写 smtp 授权码,这个得在邮箱中获取
      ●●●●●●●●●●●●●●●●
      
      # 勾选 Use SSL
      
      # SMTP port 填写
      465
      
      # Default Content Type 默认内容类型选择
      HTML (text/html)
      
      # Default Recipients 默认接收人
      wuyanzu@qq.com
      
      # Default Subject 默认主题填写
      ${BUILD_STATUS} - ${PROJECT_NAME} - Build # ${BUILD_NUMBER} !
      
      # Default Content 默认内容用 html 写,这个请见下方的 html 代码
      
      # 勾选 Allow sending to unregistered users 允许发送给未注册用户
      

      Default Content 邮件发出来的默认内容

      <!DOCTYPE html>
      <html>
      <head>
      <meta charset="UTF-8">
      <title>${ENV, var="JOB_NAME"}-第${BUILD_NUMBER}次构建日志</title>
      </head>
      
      <body leftmargin="8" marginwidth="0" topmargin="8" marginheight="4"
          offset="0">
          <table width="95%" cellpadding="0" cellspacing="0"
              style="font-size: 11pt; font-family: Tahoma, Arial, Helvetica, sans-serif">
              <tr>
                  <td>(本邮件是程序自动下发的,请勿回复!)</td>
              </tr>
              <tr>
                  <td><h2>
                          <font color="#0000FF">构建结果 - ${BUILD_STATUS}</font>
                      </h2></td>
              </tr>
              <tr>
                  <td><br />
                  <b><font color="#0B610B">构建信息</font></b>
                  <hr size="2" width="100%" align="center" /></td>
              </tr>
              <tr>
                  <td>
                      <ul>
                          <li>项目名称&nbsp;&nbsp;${PROJECT_NAME}</li>
                          <li>构建编号&nbsp;&nbsp;第${BUILD_NUMBER}次构建</li>
                          <li>SVN&nbsp;版本:&nbsp;${SVN_REVISION}</li>
                          <li>触发原因:&nbsp;${CAUSE}</li>
                          <li>构建日志:&nbsp;<a href="${BUILD_URL}console">${BUILD_URL}console</a></li>
                          <li>构建&nbsp;&nbsp;Url&nbsp;&nbsp;<a href="${BUILD_URL}">${BUILD_URL}</a></li>
                          <li>工作目录&nbsp;&nbsp;<a href="${PROJECT_URL}ws">${PROJECT_URL}ws</a></li>
                          <li>项目&nbsp;&nbsp;Url&nbsp;&nbsp;<a href="${PROJECT_URL}">${PROJECT_URL}</a></li>
                      </ul>
                  </td>
              </tr>
              <tr>
                  <td><b><font color="#0B610B">Changes Since Last
                              Successful Build:</font></b>
                  <hr size="2" width="100%" align="center" /></td>
              </tr>
              <tr>
                  <td>
                      <ul>
                          <li>历史变更记录 : <a href="${PROJECT_URL}changes">${PROJECT_URL}changes</a></li>
                      </ul> ${CHANGES_SINCE_LAST_SUCCESS,reverse=true, format="Changes for Build #%n:<br />%c<br />",showPaths=true,changesFormat="<pre>[%a]<br />%m</pre>",pathFormat="&nbsp;&nbsp;&nbsp;&nbsp;%p"}
                  </td>
              </tr>
              <tr>
                  <td><b>Failed Test Results</b>
                  <hr size="2" width="100%" align="center" /></td>
              </tr>
              <tr>
                  <td><pre
                          style="font-size: 11pt; font-family: Tahoma, Arial, Helvetica, sans-serif">$FAILED_TESTS</pre>
                      <br /></td>
              </tr>
              <tr>
                  <td><b><font color="#0B610B">构建日志 (最后 100行):</font></b>
                  <hr size="2" width="100%" align="center" /></td>
              </tr>
              <!-- <tr>
                  <td>Test Logs (if test has ran): <a
                      href="${PROJECT_URL}ws/TestResult/archive_logs/Log-Build-${BUILD_NUMBER}.zip">${PROJECT_URL}/ws/TestResult/archive_logs/Log-Build-${BUILD_NUMBER}.zip</a>
                      <br />
                  <br />
                  </td>
              </tr> -->
              <tr>
                  <td><textarea cols="80" rows="30" readonly="readonly"
                          style="font-family: Courier New">${BUILD_LOG, maxLines=100}</textarea>
                  </td>
              </tr>
          </table>
      </body>
      </html>
      
    • 再配置下 E-mail Notification

      这个邮件配置不需要装什么 jenkins 插件,默认就有,但是没有 Extended E-mail Notification 功能强大

      # SMTP server SMTP 服务器
      smtp.qq.com
      
      # 用户默认邮件后缀
      @qq.com
      
      # 勾选使用 SMTP 认证
      
      # 用户名填写 qq 号
      123456789
      
      # 密码填写 smtp 授权码,这个在邮箱中获取
      ●●●●●●●●●●●●●●●●
      
      # 勾选使用 SSL 协议
      
      # SMTP 端口
      465
      
      # 勾选通过发送测试邮件测试配置,在 Test e-mail recipient 中填写个人邮箱用来接收验证
      wuyanzu@qq.com
      
      # 点击 Test configuration 发送测试,若显示 Email was successfully sent 表示成功,我之前爆出了 501 错误,请看下方 Jenkins Location 解答
      
    • Jenkins Location 多语言配置

      # 在配置 E-mail Notification 时 Test configuration 验证邮箱接收爆出 501 错误,解决要先找到 Jenkins  Location
      
      # Jenkins URL 这个我配置的是本机
      http://localhost:8080/
      
      # 系统管理员邮件地址
      123456789@qq.com
      
      # 然后再点击 E-mail Notification 中的 Test configuration 测试邮件接收成功显示
      Email was successfully sent
      
<think>好的,我现在需要帮助用户在JenkinsDocker容器配置Maven和JDK1.8环境。首先,我得理清楚用户的问题和现有的引用内容。用户已经提供了一些引用,其中提到了如何运行JDK1.8的容器安装Jenkins的步骤,以及在Jenkins配置环境的部分说明。 首先,用户想在一个JenkinsDocker容器里同时安装Maven和JDK1.8。根据引用[3],他们之前是通过运行一个Jenkins镜像,并且挂载了多个卷来启动容器的。不过,默认Jenkins镜像可能不包含JDK1.8和Maven,所以需要手动安装或者定制镜像。 引用[1]中提到使用了一个primetoninc/jdk:1.8的镜像来运行JDK1.8。可能用户希望在这个Jenkins容器安装同样的JDK版本。同时,引用[2]指出在Jenkins的环境配置中,JDK和Git可以不用设置,因为容器启动时已经用了JDK1.8。但这里可能存在误解,因为Jenkins容器本身如果没有预装JDK的话,可能需要手动安装。 接下来,我需要考虑如何将JDK1.8和Maven安装Jenkins容器中。通常有两种方法:一种是进入正在运行的容器,手动安装然后保存为新的镜像;另一种是创建一个Dockerfile,基于Jenkins官方镜像,添加JDK和Maven的安装步骤,然后构建自定义镜像。 根据用户提供的引用[3],他们之前运行Jenkins容器时挂载了宿主机的docker.sock和docker二进制文件,可能是为了在容器内执行docker命令。这种情况下,如果用户希望容器内部也具备JDK1.8和Maven,可能需要修改Dockerfile或者在启动容器安装。 不过,用户现在可能是在现有的容器安装,而不是重新构建镜像。这时候,可以通过进入容器内部,使用apt-get或其他包管理工具安装JDK和Maven。但需要注意,Jenkins官方镜像基于什么Linux发行版。通常,Jenkins官方镜像基于Debian,所以应该使用apt-get命令。 例如,进入容器后,更新包列表,安装OpenJDK8和Maven。但需要注意,OpenJDK8在Debian的仓库中可能需要添加特定的源,或者直接下载Oracle JDK1.8的二进制包并配置环境变量。同样,Maven也需要下载并解压,设置PATH。 另外,用户可能希望将这些安装步骤固化到Dockerfile中,以便后续直接使用自定义镜像。这样每次启动容器时就不需要重新安装了。这可能是更高效的解决方案。 接下来,我需要考虑如何编写Dockerfile。例如,以jenkins/jenkins:lts为基础镜像,然后安装JDK1.8和Maven。比如: FROM jenkins/jenkins:lts USER root RUN apt-get update && \ apt-get install -y openjdk-8-jdk && \ apt-get install -y maven USER jenkins 不过,这样可能会存在问题,因为不同版本的Debian可能默认的OpenJDK版本不同。如果无法通过apt安装JDK1.8,可能需要手动下载并安装。例如,从Oracle官网下载JDK1.8的tar.gz文件,解压到指定目录,并设置JAVA_HOME和PATH环境变量。 同样,对于Maven,如果系统仓库中的版本不符合要求,可以手动下载特定版本,解压并配置环境变量。 此外,用户之前提到在引用[3]中挂载了/data/jenkins/jenkins_home作为卷,这可能包含Jenkins配置和数据。如果在容器安装软件,需要注意这些安装是否会被持久化。如果用户使用自定义镜像,每次重新创建容器时,软件会被预装,而数据卷可以保持配置。 所以,可能的步骤包括: 1. 创建自定义Dockerfile,安装JDK1.8和Maven。 2. 构建镜像并运行容器,挂载必要的卷。 3. 或者在现有容器中手动安装,但需要保存为新的镜像。 另外,用户可能需要配置Jenkins系统设置中的JDK和Maven路径。例如,在Jenkins的“全局工具配置”中,指定JDK和Maven的安装路径。即使容器安装了这些工具,Jenkins可能还需要知道它们的路径才能使用。 根据引用[2],用户提到在Jenkins的环境配置中,JDK不用设置,因为启动容器时已经用了JDK1.8。这可能是因为容器本身已经配置了JAVA_HOME环境变量,或者Jenkins默认使用宿主机的环境。但如果在容器安装了多个JDK版本,可能需要明确指定。 总结,解决方案有两种主要方法: 方法一:在Dockerfile中构建自定义镜像,包含JDK1.8和Maven,然后运行容器。 方法二:进入现有的Jenkins容器,手动安装JDK1.8和Maven,并配置环境变量,然后提交容器为新的镜像。 对于方法一,更推荐,因为可重复且易于维护。例如,Dockerfile可能如下: FROM jenkins/jenkins:lts USER root # 安装JDK 1.8 RUN apt-get update && \ apt-get install -y wget && \ wget [Oracle JDK 1.8的下载链接] && \ tar -xzf jdk-8uXXX-linux-x64.tar.gz -C /opt && \ rm jdk-8uXXX-linux-x64.tar.gz ENV JAVA_HOME /opt/jdk1.8.0_XXX ENV PATH $JAVA_HOME/bin:$PATH # 安装Maven RUN wget [Maven下载链接] && \ tar -xzf apache-maven-3.6.3-bin.tar.gz -C /opt && \ rm apache-maven-3.6.3-bin.tar.gz ENV MAVEN_HOME /opt/apache-maven-3.6.3 ENV PATH $MAVEN_HOME/bin:$PATH USER jenkins 需要注意,这里需要处理Oracle JDK的下载许可问题,因为直接从Oracle下载可能需要登录账户。因此,可能更建议使用OpenJDK,例如: RUN apt-get install -y openjdk-8-jdk 然后设置JAVA_HOME为/usr/lib/jvm/java-8-openjdk-amd64/ 对于Maven,同样可以使用apt安装,但版本可能较旧,或者手动下载指定版本。 安装完成后,构建镜像: docker build -t jenkins-jdk8-maven . 然后运行容器,使用类似引用[3]中的命令,挂载必要的卷。 对于方法二,如果用户不想重建镜像,可以进入运行的容器docker exec -it jenkins /bin/bash 然后手动安装: 更新包列表,安装OpenJDK8: sudo apt-get update sudo apt-get install openjdk-8-jdk 安装Maven: sudo apt-get install maven 或者手动下载Maven包并解压。 但需要注意,容器内的用户权限,可能需要使用root用户(在进入容器后切换为root,或者使用USER root在Dockerfile中)。 然后,检查是否安装成功: java -version mvn -v 之后,在Jenkins的系统配置中,可能需要指定JDK和Maven的路径,尤其是如果安装路径不在默认环境变量中。例如,在Jenkins的“全局工具配置”中,添加JDK和Maven,指定JAVA_HOME和MAVEN_HOME的路径。 根据引用[2],用户提到JDK不用设置,因为启动容器时已经用了JDK1.8。这可能意味着在启动Jenkins容器时,已经通过基础镜像或挂载的环境变量配置了JDK,所以Jenkins会自动检测。但如果是手动安装的,可能需要配置。 最后,测试Jenkins任务是否可以使用JDK1.8和Maven。 可能的问题包括:容器中缺少必要的依赖,权限问题,或者环境变量未正确配置。需要确保安装过程中没有错误,并且路径正确。 综上,步骤大致为: 1. 创建自定义Dockerfile安装JDK8和Maven。 2. 构建并运行镜像。 3. 在Jenkins配置工具路径(如果需要)。</think>以下是在 JenkinsDocker 容器配置 Maven 和 JDK 1.8 的完整步骤: ### 方法一:通过 Dockerfile 构建自定义镜像 1. **创建 Dockerfile** ```dockerfile FROM jenkins/jenkins:lts USER root # 安装 OpenJDK 8 RUN apt-get update && \ apt-get install -y openjdk-8-jdk && \ rm -rf /var/lib/apt/lists/* # 设置 JDK 环境变量 ENV JAVA_HOME /usr/lib/jvm/java-8-openjdk-amd64 ENV PATH $JAVA_HOME/bin:$PATH # 安装 Maven(手动下载指定版本) RUN wget https://dlcdn.apache.org/maven/maven-3/3.8.6/binaries/apache-maven-3.8.6-bin.tar.gz -P /tmp && \ tar -xzf /tmp/apache-maven-3.8.6-bin.tar.gz -C /opt && \ mv /opt/apache-maven-3.8.6 /opt/maven && \ rm /tmp/apache-maven-3.8.6-bin.tar.gz # 设置 Maven 环境变量 ENV MAVEN_HOME /opt/maven ENV PATH $MAVEN_HOME/bin:$PATH USER jenkins ``` 2. **构建镜像并运行容器** ```bash docker build -t jenkins-jdk8-maven . docker run -d --name jenkins \ -p 8080:8080 \ -v /data/jenkins/jenkins_home:/var/jenkins_home \ -v /etc/localtime:/etc/localtime \ -v /run/docker.sock:/run/docker.sock \ -v /usr/bin/docker:/usr/bin/docker \ jenkins-jdk8-maven ``` ### 方法二:手动进入容器安装(适用于临时调试) 1. **进入正在运行的 Jenkins 容器** ```bash docker exec -it jenkins /bin/bash ``` 2. **在容器内执行安装命令** ```bash # 切换 root 用户 su root # 安装 OpenJDK 8 apt-get update && apt-get install -y openjdk-8-jdk # 手动安装 Maven wget https://dlcdn.apache.org/maven/maven-3/3.8.6/binaries/apache-maven-3.8.6-bin.tar.gz tar -xzf apache-maven-3.8.6-bin.tar.gz -C /opt mv /opt/apache-maven-3.8.6 /opt/maven # 配置环境变量 echo 'export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64' >> /etc/profile echo 'export MAVEN_HOME=/opt/maven' >> /etc/profile echo 'export PATH=$MAVEN_HOME/bin:$JAVA_HOME/bin:$PATH' >> /etc/profile source /etc/profile ``` 3. **验证安装** ```bash java -version # 应显示 openjdk 1.8 mvn -v # 应显示 Maven 3.8.6 ``` ### Jenkins 全局工具配置 1. 登录 Jenkins 控制台,进入 `Manage Jenkins > Global Tool Configuration` 2. **JDK 配置** - 若使用 Dockerfile 或手动安装Jenkins 会自动检测 JDK,无需额外配置[^2] 3. **Maven 配置** - 名称: `Maven-3.8.6` - MAVEN_HOME: `/opt/maven` ### 注意事项 1. **数据持久化**:通过 `-v /data/jenkins/jenkins_home:/var/jenkins_home` 确保配置不丢失[^3] 2. **权限问题**:挂载 Docker 套接字时需确保容器内用户有执行权限[^3] 3. **镜像优化**:建议使用方法一构建自定义镜像,避免重复安装
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

abcnull

您的打赏是我创作的动力之一

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值