前言:
- 之所以要写这篇文章,因为我自己在学习jenkins时遇到了很多的问题,无从下手,网上找来的文章大都是复制粘贴残缺不全的,或者是只写到一半就没有后续的,反正是种种问题。为了帮助初学者,我决定开个博客写一篇关于Jenkins + Gitlab + Rancher +Docker 可持续集成部署环境搭建的文章,也算是对自己知识的一种积累吧。如有问题,欢迎留言。
- 本文所演示项目用的是基于Swoole4.2.8原生协程的PHP高性能协程全栈框架,php版本为7.2.11,系统为Centos7。有兴趣的同学可去研究研究该框架。
- 该项目的协同工作流程为:
jenkins 从 gitlab拉取代码制作镜像并上传到私有docker仓库,然后rancher再从私有docker仓库拉取镜像并部署服务。
Docker
- 安装
Docker从1.13版本之后采用时间线的方式作为版本号,分为社区版CE和企业版EE。
社区版是免费的,企业版会提供额外的收费服务,我们使用免费版即可。
- 先更新环境
yum update
- 安装需要的软件包
yum install -y yum-utils device-mapper-persistent-data lvm2
- 设置yum源
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
- 安装Docker
yum install -y docker-ce
- 启动服务
service docker start
- 检查Docker服务是否启动
ps aux | grep docker
- 设置开机启动,如果不想开机自启动可跳过
systemctl enable docker
- 设置Docker中国镜像
打开配置文件 /etc/docker/daemon.json,并输入下面配置项:
{
"registry-mirrors": ["https://registry.docker-cn.com"]
}
然后保存退出即可
- 卸载Docker
yum remove docker-ce docker-common docker-selinux docker-engine
- 安装Docker私有仓库
安装私有仓库是为了把Jenkins构建的项目镜像存放在该仓库中,以及后续Rancher部署服务时从该仓库拉取镜像
- 直接Docker安装
docker run --name docker-registry -d -p 5000:5000 registry
- 访问仓库
curl -X GET http://127.0.0.1:5000/v2/_catalog
返回信息如下即表示成功
- 设置允许http协议访问
修改 /etc/docker/daemon.json并添加 “insecure-registries”: [“127.0.0.1:5000”],添加之后如下:
{
"registry-mirrors": ["https://registry.docker-cn.com"],
"insecure-registries": ["127.0.0.1:5000"]
}
重启docker
service docker restart
重启私有仓库
docker start xxxx (仓库容器ID)
- 制作swoft运行环境基础镜像
该镜像在jenkins构建时会用到,我已经上传至docker hub,可通过,镜像名为 422909231cy/swoft-base-env 可下载查看Dockerfile.
Gitlab
为了快速安装及避免不必要的麻烦,直接Docker安装。Gitlab也是区分社区免费版和企业收费版,直接安装CE社区免费版
- 拉取镜像
docker pull gitlab/gitlab-ce:latest
- 运行镜像
一般会在宿主机新建3个目录,将gitlab的配置文件(etc),日志文件(log),数据(data)存放在容器之外,方便升级迁移。
mkdir -p /mnt/gitlab/etc
mkdir -p /mnt/gitlab/log
mkdir -p /mnt/gitlab/data
目录创建完成之后执行以下命令,运行docker
docker run \
-d \
-p 443:443 \
-p 8881:80 \
--name gitlab-ce \
--restart unless-stopped \
-v /mnt/gitlab/etc:/etc/gitlab \