zoukankan      html  css  js  c++  java
  • 使用Jenkins来构建Docker容器

    使用Jenkins来构建Docker容器(Ubuntu 14.04)

    当开发更新了代码,提交到Gitlab上,然后由测试人员触发Jenkins,于是一个应用的新版本就被构建了。听起来貌似很简单,duang~duang~duang,我用了是这样,你们用了也是这样,看起来这个过程很自动化,其实这里面加了很多特技,根本就没有这样的头发,不对,根本就没有这样简单的方式,其环境搭建的过程十分繁琐,jenkins的上下文关系配置更是相当困难。今天我来介绍一种简单的新方法-使用Jenkins来构建一个apache容器。

    以下操作的目标:jenkins放置在宿主机内(Ubuntu14.04),apache容器放置在容器里,以后apache镜像一做修改,触发构建一个jenkins的job,宿主机会停掉原来的容器,生成一个新的容器。

    下面进入正式环节。

    1.安装Jenkins

    #wget -q -O - http://pkg.jenkins-ci.org/debian/jenkins-ci.org.key | #sudo apt-key add -  
    #sudo sh -c 'echo deb http://pkg.jenkins-ci.org/debian binary/ > /etc/apt/sources.list.d/jenkins.list'  
    #sudo apt-get update  
    #sudo apt-get install jenkins  

    2.登陆http://IP:8080,进入jenkins,在http://IP:8080/pluginManager/available安装一些必要的插件SCM Sync Configuration Plugin ,GitHub plugin ,GIT plugin ,GIT client plugin ,安装结束后重启jenkins.

    3.重新登陆http://IP:8080,进入jenkins,新建一个名为apache的Item.

    •  配置如下面截图

     

      shell脚本如下,该脚本会从github上(如果有本地gitlab操作同理)

    复制代码
    #!/bin/sh
    id
    set +e
    echo '>>> Get old container id'
    
    CID=$(docker ps | grep "apache" | awk '{print $1}')
    
    echo $CID
    
    /usr/local/bin/docker build -t apache /var/lib/jenkins/jobs/apache/workspace | tee /var/lib/jenkins/jobs/apache/workspace/Docker_build_result.log
    RESULT=$(cat /var/lib/jenkins/jobs/apache/workspace/Docker_build_result.log | tail -n 1)
    
    #if [["$RESULT" != *Successfully*]];then
    #  exit -1
    #fi
    
    echo '>>> Stopping old container'
    
    if [ "$CID" != "" ];then
      /usr/local/bin/docker stop $CID
    fi
    
    echo '>>> Restarting docker'
    service docker.io restart
    sleep 5
      
    echo '>>> Starting new container'
    /usr/local/bin/docker run -p 3000:80 -d apache
    复制代码

    4.配置结束后,保存

    5.配置jenkins用户

      此时还不能立即构建,因为jenkins触发脚本并不是root用户,因此需要将jenkins免用户,并将用户加入到docker组,否则获取不到容器ID.

    复制代码
    root@iZ2893wjzgyZ:~# vim /etc/sudoers
    
    # User privilege specification
    root    ALL=(ALL:ALL) ALL
    jenkins ALL=(ALL:ALL) ALL
    
    jenkins@iZ2893wjzgyZ:~$ usermod -G docker jenkins
    复制代码

    6.开始构建,在jenkins的build记录中可以看到输出,由于jenkins会自动把github上的文件给下载下来放在workspace目录中,因此,触发脚本后,直接开始构建apache镜像。

    7.现在查看一下镜像和容器,登陆apache网站验证

    容器生成的apache页面打开如下

     

    当前标签: Docker

     
    从零开始使用Jenkins来构建Docker容器(Ubuntu 14.04) alexkn 2015-03-04 19:30 阅读:155 评论:0  
     
    用Docker封装一个web应用(Django) alexkn 2015-01-28 17:23 阅读:110 评论:0  
     
    centos安装docker alexkn 2015-01-20 22:07 阅读:23 评论:0  
     
    docker中如何制作自己的基础镜像 alexkn 2014-07-31 14:17 阅读:150 评论:0  
     
    Docker 总结(转载) alexkn 2014-07-30 14:48 阅读:136 评论:0  
     
    Docker简明教程(以安装wget程序为例) alexkn 2014-07-29 17:01 阅读:450 评论:0  
     
    标签: Dockerjenkins
  • 相关阅读:
    webdav srs相关
    How To Configure WebDAV Access with Apache on Ubuntu 14.04
    ubuntu 编译lighttpd
    srs编译及推流测试
    Compile pciutils (lspci, setpci) in Windows x86,在 Windows x86 平台下编译 pciutils (lspci, setpci)
    mingw MSYS2 区别
    Qt之美(三):隐式共享
    Qt之美(二):元对象
    Qt之美(一):d指针/p指针详解
    C++的栈空间和堆空间
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/4314792.html
Copyright © 2011-2022 走看看