最近学习了下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介绍
3.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)
- 安装maven,安装jdk (命令网上一大堆)
- 安装 runner
- 安装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见下图
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文件替换。