准备条件

  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-repohttps://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-g500work&&\              useradd -u500-g500work&&\              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-uRD-prdV5@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 MAINTAINERwangqingxin 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

基于docker的CI/CD相关推荐

  1. Jenkins X:基于Kubernetes的CI/CD平台

    背景 Jenkins自动化服务器一直都是DevOps工具链的重要组成部分,并且已发展成为开源持续集成和持续部署(CI&CD)软件的领导者.据不完全统计,截至2019年6月,已有将近26万的Je ...

  2. Docker + GitLab CI/CD 实现自动化部署

    使用Docker+gitlab ci/cd 实现自动化部署 文章目录 使用Docker+gitlab ci/cd 实现自动化部署 1. Docker 1.1 Docker是什么? 1.2 Docker ...

  3. 基于 Kubernetes 实现 CI/CD 配置

    基于 Kubernetes 实现 CI/CD 配置 一.基本介绍 二.基于 Kubernetes 实现 CI/CD 配置 1.配置 GitLab 2.配置 Jenkins 3.实现 CI/CD 配置 ...

  4. 『中级篇』docker之CI/CD持续集成-项目生成镜像(76)

    原创文章,欢迎转载.转载请注明:转载自IT人故事会,谢谢! 原文链接地址:『中级篇』docker之CI/CD持续集成-项目生成镜像(76) 开始想用docker registry做私有镜像库,后来放弃 ...

  5. 『中级篇』docker之CI/CD持续集成-(终结篇)(77)

    原创文章,欢迎转载.转载请注明:转载自IT人故事会,谢谢! 原文链接地址:『中级篇』docker之CI/CD持续集成-(终结篇)(77) 今天是中级终结篇的最后一次了,想想在二个月的时间,每天的坚持学 ...

  6. docker GitLab-runner CI/CD持续集成

    docker GitLab-runner CI/CD持续集成 docker GitLab-runner CI/CD持续集成 机器配置 gitlab安装 拉取镜像 创建挂载目录 启动容器 注册gitla ...

  7. GitLab + Jenkins + Docker 实现 CI/CD 集成发布

    前言 在没有持续集成持续发布之前,传统的开发模式是项目一开始就划分模块,等到所有代码开发完成之后再集成到一起进行测试,但是随着技术的发展,业务量不断增加,软件规模也在不断的扩大,单一的划分模块的方式就 ...

  8. 基于K8s的CI/CD自动化持续集成部署框架

    文章目录 什么是CI/CD? 1 环境准备 2 组件部署 2.1 jenkins快速部署 2.2 gitlab快速部署 2.3 harbor快速部署 3 CI/CD交付 什么是CI/CD? CI/CD ...

  9. 【aws】ECS上构筑基于Concourse的CI/CD方案

    Amazon Elastic Container Service (Amazon ECS) 是一项高度可扩展的快速容器管理服务,它可轻松运行.停止和管理群集上的容器.您的容器在任务定义中定义,用于运行 ...

最新文章

  1. OC基本数据存储方式
  2. 6亿数据秒级查询,ClickHouse太快了!
  3. matlab振动频谱分析是不是要,VB和Matlab混编实现振动信号的频谱分析
  4. python爬虫新手项目-Python爬虫实战之取电影天堂,,新手练手项目
  5. opencv Remap 图像的映射
  6. 第四范式获批工信部工业和信息化人才培养工程培训基地
  7. roobo机器人怎么唱歌_日本“观音”机器人问世,可以陪僧人念佛经
  8. ROS 常用命令汇总(不定期更新)
  9. JavaOne美国之行–走势篇
  10. 《DSP using MATLAB 》示例Example6.3
  11. mysql数据库sql语法_Mysql数据库SQL语句整理
  12. JavaScript重载解读
  13. 闲来无事,仿了一个百度杀毒主界面
  14. tp5 自定义配置文件
  15. modbus调试工具
  16. netdraw 根据度调整节点尺寸
  17. 安川机器人外部急停信号点不开_安川机器人外部IO启动
  18. 通达信手机版分时图指标大全_通达信精选指标——挣开眼就买卖版指标详解
  19. unity拖拽drag_UGUI事件之Drag拖拽事件
  20. 苹果cmsv10怎么添加常见的几种广告代码

热门文章

  1. AngularJS 的异步服务测试与Mocking
  2. 手动指定 main 函数作为入口libvcruntimed.lib
  3. 启动 Eclipse 弹出“Failed to load the JNI shared library jvm.dll”错误的解决方法!在eclipse.ini中为eclipse指定jdk启动...
  4. expdp 详解及实例
  5. 系统架构技能之设计模式-抽象工厂模式
  6. 和我一起学Windows Workflow Foundation(1)-----创建和调试一个WF实例
  7. 用GitHub Copilot 生成的项目中,40%会引入漏洞
  8. 西门子 PLM 产品被曝数十个漏洞,可导致代码执行后果
  9. FBI 和 NSA 披露俄罗斯国家黑客使用的 Linux 恶意软件
  10. android studio gradle 更新方法。