基于docker的CI/CD
准备条件
- 使用docker的机器,添加用户时需要指定用户的uid :
sudo groupadd -g 500 work && useradd -g 500 -u 500 work
否则可能出现容器无权限访问挂载数据卷的问题 - OS Requirements:
https://download.docker.com/linux/centos/docker-ce.repo
64bit-CentOs 7
- 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 - 编辑/lib/systemd/system/docker.service
ExecStart=/usr/bin/dockerd
-g/data/lib/docker/ 建立文件夹,启动docker
sudo systemctl daemon-reload
sudo mkdir -p /data/lib/docker
sudo systemctl start docker- 建立用户组(使用work账号管理)
sudo groupadd docker ; sudo usermod -aG docker work - sed -i 's/net.ipv4.ip_forward =0/net.ipv4.ip_forward = 1/g' /etc/sysctl.conf && sysctl -p
Jenkins机器:
镜像仓库
- 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
示例:
php基础镜像构建
- 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 - 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)
- 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 - 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
- jenkins 触发器设置
安装gitlab插件
- gitlab webhook 添加
其他
- 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/加到路径里面) - swarm (docker 集群管理工具)
选取一台作为manager, docker swarm init
选取一台作为worker,docker swarm join --token SWMTKN-1-23xycpsnfhn42zysnc1y738cf6rpi1oy6om4pvo0jsb355ydcv-0gia3fi7uob0gbpo7t85x1hi4 10.19.24.245:2377
常见问题
- yum 安装报Rpmdb checksum is invalid错误
尝试yum install ** || true
或yum clean all - Docker 镜像size太大
Docker file 尽量不要使用yum update(请尽量用最新的镜像代替改命令)
chown命令的目标对象如果很大的话,可以在加入docker镜像之前提前chown
基于docker的CI/CD相关推荐
- Jenkins X:基于Kubernetes的CI/CD平台
背景 Jenkins自动化服务器一直都是DevOps工具链的重要组成部分,并且已发展成为开源持续集成和持续部署(CI&CD)软件的领导者.据不完全统计,截至2019年6月,已有将近26万的Je ...
- Docker + GitLab CI/CD 实现自动化部署
使用Docker+gitlab ci/cd 实现自动化部署 文章目录 使用Docker+gitlab ci/cd 实现自动化部署 1. Docker 1.1 Docker是什么? 1.2 Docker ...
- 基于 Kubernetes 实现 CI/CD 配置
基于 Kubernetes 实现 CI/CD 配置 一.基本介绍 二.基于 Kubernetes 实现 CI/CD 配置 1.配置 GitLab 2.配置 Jenkins 3.实现 CI/CD 配置 ...
- 『中级篇』docker之CI/CD持续集成-项目生成镜像(76)
原创文章,欢迎转载.转载请注明:转载自IT人故事会,谢谢! 原文链接地址:『中级篇』docker之CI/CD持续集成-项目生成镜像(76) 开始想用docker registry做私有镜像库,后来放弃 ...
- 『中级篇』docker之CI/CD持续集成-(终结篇)(77)
原创文章,欢迎转载.转载请注明:转载自IT人故事会,谢谢! 原文链接地址:『中级篇』docker之CI/CD持续集成-(终结篇)(77) 今天是中级终结篇的最后一次了,想想在二个月的时间,每天的坚持学 ...
- docker GitLab-runner CI/CD持续集成
docker GitLab-runner CI/CD持续集成 docker GitLab-runner CI/CD持续集成 机器配置 gitlab安装 拉取镜像 创建挂载目录 启动容器 注册gitla ...
- GitLab + Jenkins + Docker 实现 CI/CD 集成发布
前言 在没有持续集成持续发布之前,传统的开发模式是项目一开始就划分模块,等到所有代码开发完成之后再集成到一起进行测试,但是随着技术的发展,业务量不断增加,软件规模也在不断的扩大,单一的划分模块的方式就 ...
- 基于K8s的CI/CD自动化持续集成部署框架
文章目录 什么是CI/CD? 1 环境准备 2 组件部署 2.1 jenkins快速部署 2.2 gitlab快速部署 2.3 harbor快速部署 3 CI/CD交付 什么是CI/CD? CI/CD ...
- 【aws】ECS上构筑基于Concourse的CI/CD方案
Amazon Elastic Container Service (Amazon ECS) 是一项高度可扩展的快速容器管理服务,它可轻松运行.停止和管理群集上的容器.您的容器在任务定义中定义,用于运行 ...
最新文章
- OC基本数据存储方式
- 6亿数据秒级查询,ClickHouse太快了!
- matlab振动频谱分析是不是要,VB和Matlab混编实现振动信号的频谱分析
- python爬虫新手项目-Python爬虫实战之取电影天堂,,新手练手项目
- opencv Remap 图像的映射
- 第四范式获批工信部工业和信息化人才培养工程培训基地
- roobo机器人怎么唱歌_日本“观音”机器人问世,可以陪僧人念佛经
- ROS 常用命令汇总(不定期更新)
- JavaOne美国之行–走势篇
- 《DSP using MATLAB 》示例Example6.3
- mysql数据库sql语法_Mysql数据库SQL语句整理
- JavaScript重载解读
- 闲来无事,仿了一个百度杀毒主界面
- tp5 自定义配置文件
- modbus调试工具
- netdraw 根据度调整节点尺寸
- 安川机器人外部急停信号点不开_安川机器人外部IO启动
- 通达信手机版分时图指标大全_通达信精选指标——挣开眼就买卖版指标详解
- unity拖拽drag_UGUI事件之Drag拖拽事件
- 苹果cmsv10怎么添加常见的几种广告代码
热门文章
- AngularJS 的异步服务测试与Mocking
- 手动指定 main 函数作为入口libvcruntimed.lib
- 启动 Eclipse 弹出“Failed to load the JNI shared library jvm.dll”错误的解决方法!在eclipse.ini中为eclipse指定jdk启动...
- expdp 详解及实例
- 系统架构技能之设计模式-抽象工厂模式
- 和我一起学Windows Workflow Foundation(1)-----创建和调试一个WF实例
- 用GitHub Copilot 生成的项目中,40%会引入漏洞
- 西门子 PLM 产品被曝数十个漏洞,可导致代码执行后果
- FBI 和 NSA 披露俄罗斯国家黑客使用的 Linux 恶意软件
- android studio gradle 更新方法。