zoukankan      html  css  js  c++  java
  • docker-compose安装JenKins

    一、Jenkins

    Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。

    JenKins官网

    二、安装JenKins的前提条件

    硬件 最低要求 推荐
    内存 256M 1GB或更高
    硬盘 1GB(作为一个Docker容器运行jenkins的话推荐10GB) 50GB或更高

    三、部署规划

    服务器IP 192.168.113.48
    端口 8928
    安装目录 /home/work/docker-jenkins
    数据卷映射目录 /home/work/docker-jenkins/data

    四、安装JenKins

    • 在安装目录下创建docker-jenkins目录,创建成功后进入该目录

      mkdir docker-jenkins
      cd docker-jenkins
      
    • 新建并按照规划编辑docker-compose.yml文件,编辑完后保存退出

      vim docker-compose.yml
      
      version: '3'
      services:
        jenkins:
          image: 'jenkins/jenkins:lts'
          container_name: jenkins
          restart: always
          environment:
            - TZ=Asia/Shanghai
          ports:
            - '8928:8080'
            - '50000:50000'
          volumes:
            - '/etc/localtime:/etc/localtime'
            - './data:/var/jenkins_home'
            - '/var/run/docker.sock:/var/run/docker.sock'
            - '/usr/bin/docker:/usr/bin/docker'
      
    • 在安装目录下执行相关命令,启动容器

      docker-compose up -d
      

      执行命令后发现服务并没有运行,查看日志:

      [root@node03 docker-jenkins]# docker-compose ps
       Name                Command                 State      Ports
      -------------------------------------------------------------
      jenkins   /sbin/tini -- /usr/local/b ...   Restarting        
      [root@node03 docker-jenkins]# docker-compose logs -f
      Attaching to jenkins
      jenkins    | Can not write to /var/jenkins_home/copy_reference_file.log. Wrong volume permissions?
      jenkins    | touch: cannot touch '/var/jenkins_home/copy_reference_file.log': Permission denied
      jenkins    | Can not write to /var/jenkins_home/copy_reference_file.log. Wrong volume permissions?
      jenkins    | touch: cannot touch '/var/jenkins_home/copy_reference_file.log': Permission denied
      jenkins    | touch: cannot touch '/var/jenkins_home/copy_reference_file.log': Permission denied
      jenkins    | Can not write to /var/jenkins_home/copy_reference_file.log. Wrong volume permissions?
      jenkins    | touch: cannot touch '/var/jenkins_home/copy_reference_file.log': Permission denied
      jenkins    | Can not write to /var/jenkins_home/copy_reference_file.log. Wrong volume permissions?
      jenkins    | touch: cannot touch '/var/jenkins_home/copy_reference_file.log': Permission denied
      jenkins    | Can not write to /var/jenkins_home/copy_reference_file.log. Wrong volume permissions?
      jenkins    | touch: cannot touch '/var/jenkins_home/copy_reference_file.log': Permission denied
      jenkins    | Can not write to /var/jenkins_home/copy_reference_file.log. Wrong volume permissions?
      jenkins    | touch: cannot touch '/var/jenkins_home/copy_reference_file.log': Permission denied
      jenkins    | Can not write to /var/jenkins_home/copy_reference_file.log. Wrong volume permissions?
      jenkins    | touch: cannot touch '/var/jenkins_home/copy_reference_file.log': Permission denied
      jenkins    | Can not write to /var/jenkins_home/copy_reference_file.log. Wrong volume permissions?
      jenkins    | touch: cannot touch '/var/jenkins_home/copy_reference_file.log': Permission denied
      jenkins    | Can not write to /var/jenkins_home/copy_reference_file.log. Wrong volume permissions?
      jenkins    | touch: cannot touch '/var/jenkins_home/copy_reference_file.log': Permission denied
      jenkins    | Can not write to /var/jenkins_home/copy_reference_file.log. Wrong volume permissions?
      jenkins    | touch: cannot touch '/var/jenkins_home/copy_reference_file.log': Permission denied
      jenkins    | Can not write to /var/jenkins_home/copy_reference_file.log. Wrong volume permissions?
      jenkins    | touch: cannot touch '/var/jenkins_home/copy_reference_file.log': Permission denied
      jenkins    | Can not write to /var/jenkins_home/copy_reference_file.log. Wrong volume permissions?
      jenkins    | touch: cannot touch '/var/jenkins_home/copy_reference_file.log': Permission denied
      jenkins    | Can not write to /var/jenkins_home/copy_reference_file.log. Wrong volume permissions?
      jenkins    | touch: cannot touch '/var/jenkins_home/copy_reference_file.log': Permission denied
      jenkins    | Can not write to /var/jenkins_home/copy_reference_file.log. Wrong volume permissions?
      jenkins    | touch: cannot touch '/var/jenkins_home/copy_reference_file.log': Permission denied
      jenkins    | Can not write to /var/jenkins_home/copy_reference_file.log. Wrong volume permissions?
      jenkins    | Can not write to /var/jenkins_home/copy_reference_file.log. Wrong volume permissions?
      jenkins    | touch: cannot touch '/var/jenkins_home/copy_reference_file.log': Permission denied
      jenkins    | touch: cannot touch '/var/jenkins_home/copy_reference_file.log': Permission denied
      jenkins    | Can not write to /var/jenkins_home/copy_reference_file.log. Wrong volume permissions?
      jenkins    | Can not write to /var/jenkins_home/copy_reference_file.log. Wrong volume permissions?
      jenkins    | touch: cannot touch '/var/jenkins_home/copy_reference_file.log': Permission denied
      

      通过日志发现,是由于权限不足导致服务没有正常运行, 因为当映射本地数据卷时,/home/work/docker-jenkins目录的拥有者为root用户,而容器中jenkins user的uid为1000;执行以下命令即可。

      chown -R 1000:1000 /home/work/docker-jenkins
      

      执行命令后会发现服务已正常启动:

      [root@node03 docker-jenkins]# chown -R 1000:1000 /home/work/docker-jenkins
      You have new mail in /var/spool/mail/root
      [root@node03 docker-jenkins]# docker-compose ps
       Name                Command               State                        Ports                      
      ---------------------------------------------------------------------------------------------------
      jenkins   /sbin/tini -- /usr/local/b ...   Up      0.0.0.0:50000->50000/tcp, 0.0.0.0:8928->8080/tcp
      

    五、验证Jenkins

    • 在浏览器输入ip:端口,页面提示解锁Jenkins

      BAXFoj.png

      根据页面提示信息,密码路径(路径为容器中路径)如上图所示,在此之前已经做了数据映射,不用登录容器,直接在宿主机查看即可:

      [root@node03 docker-jenkins]# cat /home/work/docker-jenkins/data/secrets/initialAdminPassword 
      d1d17726052b4716acd6315a276fd0fb
      

      将查出来的密码复制到浏览器中即可。点击"继续"就会出现以下界面:

      BAj1u8.png

      根据自己所需进行选择即可。(建议选择“安装推荐的插件”,若插件安装失败,多试几次即可)

    插件下载较慢是由于服务器在国外,所以下载缓慢,可以更换为国内插件源:
    Jenkins更换国内插件镜像源教程

  • 相关阅读:
    北航 2012 秋季 软件工程课 M2 要求
    现代软件工程讲义 7 设计阶段 Spec
    软件工程讲义 0 微博上的软件工程
    现代软件工程讲义 8 软件的血型
    北航 2012 秋季 现代软件工程 两人结对 作业要求
    现代软件工程讲义 6 用户调研
    现代软件工程 2012 北航 项目复审模板
    北航 2012 秋季 现代软件工程 团队项目要求
    现代软件工程 学生阅读、思辨和调查作业
    现代软件工程讲义 5 团队合作的阶段
  • 原文地址:https://www.cnblogs.com/linanjie/p/13932393.html
Copyright © 2011-2022 走看看