gitlab+jenkins+docker 实现自动化部署
2018-12-10 本文已影响48人
Mr_Dragonn
基本介绍
1.Jenkins:Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。
2.Docker:Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。
说说我对于docker的理解:
docker就像一个轻量级虚拟机一样 每一个docker容器都是一个封闭的小的沙盒环境,与物理机之间没有任何关联的
docker的镜像就像一个ghost镜像一样,里边有搭建好的开发环境,安装起来比较方便.
容器就相当于通过ghost镜像创建的虚拟机一样,每个容器之间没有关联,互不干扰
gitlab+jenkins+docker
网络结构图
整体结构图.jpg流程介绍(以微信叫号项目为例)
1.提交代码后 gitlab服务器会给Jenkins服务器发送消息(webhook方式)
通过Webhook的相关设置,可以实现代码Push后,自动去触发jenkins上的构建动作,这样就不需要人工干预去执行发版操作了
[参考链接](https://www.jianshu.com/p/2b2c204dcbe2)
2.Jenkins服务收到消息后 去gitlab服务器上拉去代码
根据代码中的Jenkinsfile 文件来进行相应的操作
jenkinsfile 可以通过stages 来设置操作流程
叫号项目中定义的流程:
1.进入指定的docker容器 更新代码 打包
2.将打包好的代码放到指定的目录下解压 删除压缩包
3.运行成功后发送邮件通知开发者
参考链接:https://blog.csdn.net/kikajack/article/details/79434552
3.根据代码中的dockerFile来打包对应的docker镜像
根据dockerfile 打包docker镜像
dockerfile 中会有docker打包所需要的基本镜像、开放的端口号、执行的命令
4.根据docker镜像创建docker容器运行
根据docker的镜像创建容器 如果有相同的容器名称,旧的容器就会置为none 每隔一段时间就会删除none的容器
5.Nginx进行转发(通过Nginx实现访问项目的时候不加端口号)
配置Nginx转发
首先来解释一下为什么用Nginx转发: 如果不使用Nginx的情况下访问部署的镜像就必须加上端口号(例如 http://192.168.10.100:3009/)
在使用Nginx后可以实现url+路径的方式(例如:http://192.168.10.150/meeting/#/)