基于docker的CI/CD

准备条件

  1. 使用docker的机器,添加用户时需要指定用户的uid  : 
      sudo groupadd -g 500 work && useradd -g 500 -u 500 work   
    否则可能出现容器无权限访问挂载数据卷的问题
  2. OS  Requirements:
    https://download.docker.com/linux/centos/docker-ce.repo

      64bit-CentOs 7
  3. Docker Installation  (参考https://docs.docker.com/engine/installation/linux/centos/#install-using-the-repository
      版本: CE(社区版)
      安装:    sudo yum install -y yum-utils device-mapper-persistent-data lvm2 &&  sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo && sudo yum makecache fast && sudo yum -y install docker-ce 
  4. 编辑/lib/systemd/system/docker.service
    ExecStart=/usr/bin/dockerd -g /data/lib/docker/
  5. 建立文件夹,启动docker
    sudo mkdir -p /data/lib/docker
    sudo systemctl daemon-reload 
    sudo systemctl start docker
  6. 建立用户组(使用work账号管理)
      sudo groupadd docker  ; sudo usermod -aG docker work
  7. sed -i   's/net.ipv4.ip_forward = 0/net.ipv4.ip_forward = 1/g'  /etc/sysctl.conf  && sysctl -p


Jenkins机器:


镜像仓库

  1. Harbor Installation (镜像仓库管理工具) (git: https://github.com/vmware/harbor)
      sudo yum -y install wget && mkdir -p /data/soft && sudo chown -R work:work /data/soft && cd /data/soft && wget https://github.com/vmware/harbor/releases/download/v1.1.0/harbor-online-installer-v1.1.0.tgz && tar zxf harbor-online-installer-v1.1.0.tgz
      cd harbor && 编辑  harbor.cfg  && sh install.sh

示例:harbor.cfg

php基础镜像构建

  1. Dockerfile:
        FROM centos:centos6.6
        MAINTAINER wangqingxin

        ADD bfrontapi.tar.gz /data/deploy/
        COPY run.sh /data/deploy/bfrontapi/
        RUN groupadd -g 500 work && \
                 useradd -u 500 -g 500 work && \
                 ln -s /data/deploy /opt/deploy && \

                 ln -s /lib64/libpcre.so.0.0.1 /lib64/libpcre.so.1 && \
                 chown work:work /data/deploy/bfrontapi/run.sh && \

                 chmod u+x /data/deploy/bfrontapi/run.sh && \
                 cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
         USER work
         WORKDIR /data/deploy/bfrontapi/
         VOLUME /data/deploy/bfrontapi/log


  2. run.sh
        #!/bin/sh
        /data/deploy/bfrontapi/hhvm/bin/hhvm_control start
        sh /data/deploy/bfrontapi/webserver/loadnginx.sh start
        trap "sh /data/deploy/bfrontapi/webserver/loadnginx.sh stop; exit" TERM
        while true
        do 
            sleep 5
        done

php持续构建(tag-push trigger)

  1. build.sh

    docker login -u RD -p rdV5@harbor. https://harbor.qyvideo.net
           docker pull harbor.qyvideo.net/php-api/php-api:basic
           git_tag=`git tag|tail -1`
           URL='harbor.qyvideo.net'
           TAG=$URL/php-api/php-api:$git_tag
           docker build -t $TAG ./docker/.
           docker push $TAG
           docker rmi $TAG

     
  2. Dockerfile

    FROM harbor.qyvideo.net/php-api/php-api:basic
           MAINTAINER wangqingxin
           ADD php-app.tgz /data/deploy/bfrontapi
           RUN sh /opt/deploy/bfrontapi/deployconf.sh /opt/deploy/bfrontapi production restart && \
                    mkdir -p /home/work/odp/log && \
                    touch /home/work/odp/log/error.log
           EXPOSE 8000
           CMD /data/deploy/bfrontapi/run.sh
     

  3. jenkins 触发器设置
           安装gitlab插件
             
  4. gitlab webhook 添加
           


其他        

  1. Docker Compose Installation (参考https://docs.docker.com/compose/install/
      sudo -i;
     curl -L https://github.com/docker/compose/releases/download/1.12.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose  && chmod +x /usr/local/bin/docker-compose
     which docker-compose (如果没有的话,把 /usr/local/bin/加到路径里面) 
  2. swarm (docker 集群管理工具)
      选取一台作为manager,  docker swarm init
            选取一台作为worker,docker swarm join     --token SWMTKN-1-23xycpsnfhn42zysnc1y738cf6rpi1oy6om4pvo0jsb355ydcv-0gia3fi7uob0gbpo7t85x1hi4     10.19.24.245:2377


常见问题        

  1. yum 安装报Rpmdb checksum is invalid错误
    尝试yum install ** || true
    或yum clean all
  2. Docker 镜像size太大
    Docker file 尽量不要使用yum update(请尽量用最新的镜像代替改命令)
    chown命令的目标对象如果很大的话,可以在加入docker镜像之前提前chown
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值