美文网首页
持续集成 gitlab-ci+arteryDocker

持续集成 gitlab-ci+arteryDocker

作者: KubiL | 来源:发表于2017-07-27 10:11 被阅读0次

    最近学习了下docker ,听了一次卷宗团队王凯同学关于gitlab-ci的分享,加上公司有arterydocker这个平台。所以决定尝试配置一套自动集成部署。

    下面的内容主要分为几个部分:

    1. 新的流程
    2. 关于gitlab-ci介绍
    3. docker的简单介绍
    4. arteryDocker简单介绍
    5. gitlab-ci +arteryDocker具体配置
    6. 遇到的问题
    

    如果只是需要了解,请看1,2,3。 如果需要具体尝试 请看剩下几条。

    1.新的流程

    新流程

    当前由于arteryDocker平台不支持命令启动更新部署应用 所以 暂时只能支持到 每次提交自动生成镜像 并且自动推送到arteryDocker仓库,需手动点击平台上应用的重新部署按钮,从而完成部署。arteryDocker平台在7月底版本应该会支持远程调用重新部署启动应用。到时可实现全部自动化。

    2.关于gitlab-ci介绍

    gitlab-ci介绍

    3.docker的简单介绍

    docker简单介绍

    推荐书籍:
    docker --从入门到实践

    4.arteryDocker简单介绍

    借ADC上关于arteryDocker的介绍

    ArteryDocker平台是以docker为底层核心开发的一套集部署、管理、调度、运维于一体的系统,它实现了传统的项目与docker进行完美结合。

    优势:

    • 封装
        应用发布包包含了所有所需要的环境
    • 高效
        容器技术比虚拟机更加轻量,资源开销少,利用率高
    • 智能
        应用占用资源在允许的范围内按需占用,系统能够及时有效统治警告,错误信息
    • 安全
        所有应用与外界网络隔离,任何端口都需要进行路由的端口映射
    

    我理解的arteryDocker平台是将docker很多功能做到可视化,并且增加一些命令的封装,将用户的操作尽可能的简单化。

    详细介绍请见

    5. gitlab-ci +arteryDocker具体配置

    本文基于 centos7 gitlab 8.8.5 gitlab-ci-runner 1.11.2 docker 17.05.0
    流程如下
    1. 配置runner服务器环境(包含runner,maven,jdk,docker)
    2. 书写dockerfile
    3. 配置gitlab-ci.yml
    4. arteryDocker平台使用
    一、 配置runner服务器环境(包含runner,maven,jdk,docker)

    1. 安装maven,安装jdk (命令网上一大堆)
    2. 安装 runner

    gitlab-ci介绍

    1. 安装docker (注意与runner在一台服务器上安装)
      docker --从入门到实践中centos安装docker章节。
      安装后 记得 启动docker 服务
      service docker start
      还有记得把gitlab-runner这个用户 加入docker组中 否则 docker-runner执行脚本 关于操作docker会报无权限。具体操作见第一个问题解决方案

    4 . 整体流程

    每次合并后,gitlab-ci找到指定runner 执行 .gitlab-ci.yml,gitlab-ci.yml见下图

    .gitlab-ci.yml

    runner 调用maven去打包,将打好的war包和项目中写好的dockerfile放入同一目录,然后将调用docker命令生成镜像,推送到artery平台,跟arteryDocker了解后,7月底的版本 arteryDocker会支持远程调用更换应用镜像、重新部署。

    5 . 注意
    ① . runner执行命令时使用的是gitlab-runner这个用户执行的,一个是需要将该用户加入docker的group,否则执行命令报没有权限,第二个是需要将maven 本地repository的所有者改为gitlab-runner,不这样mvn操作时会报一堆不让删除等等的错误。
    ② . 关于dockerfile的书写 要注意dockerfiel文件名大小写的问题
    ③. 关于config中的配置 如果没有使用配置服务,或者获取时候没有从环境变量中获取,则要将config.properties放入数据卷中,启动时通过ENTRYPOINT将config文件替换。

    Dockerfile dzjz-entrypoint.sh

    6. 遇到的问题

    http://www.jianshu.com/p/941a0a034e4d

    相关文章

      网友评论

          本文标题:持续集成 gitlab-ci+arteryDocker

          本文链接:https://www.haomeiwen.com/subject/neluhxtx.html