使用docker实现半自动化代码自动部署与回滚
最近开发docker的caas平台,目前已经开发完成,在优化性能与套模板。对于docker最近是很好,很多人把docker做为vm来使用,当然作为测试来说是没问题,但我感觉docker本身在做沙箱、自动化部署与回滚方面更适合,下面介绍一下我这里是如何通过docker实现代码半自动化部署。
目前我这里已经实现能结合svn或者git代码库,对node、php、java代码进行半自动化部署,先给大家截图看效果,感觉满意在继续细看。
总界面如下
点击左上角的“新增开放项目”就可以新建立测试,下面是功能截图:
默认情况下,这个操作跟容器创建类似,后期我也打算把容器管理跟程序开发管理合并。
代码存放支持2种,分别是svn存放:
以及git存放:
平台支持PHP、node、java这3中代码类型,默认类型为PHP。
接下来我们进入实测演练即如何使用平台进行快速代码更新:
我将通过2个测试实例来帮助大家理解。
测试需求一:对基于存放svn库的java代码进行快速的部署与测试
假如当前当前SVN库版本为13,文件内容如下:
test6.jsp文件内容如下:
接下来选择镜像(java代码,当然选CentOS6系统 + Tomcat镜像,然后输入好SVN信息)来创建测试:
鉴于Tomcat比较费内存,所以选择1G的内存,ssh密码验证方式,然后创建测试:
创建成功后,右侧会有弹框提示:
下一步就是设置防火墙,或者绑定公网IP后再做防火墙。我们使用空闲IP xxx.xxx.57.182来设置:
绑定成功之后,设置防火墙:
默认是没有规则,所以规则一栏显示红色的无。
新增完成后,再点击Apply(点击这个主要是防止修改错规则)生效。当前的防火墙规则为:
如此,我们可以通过xxx.xxx.57.182:8080/container_name/file/filename来访问(由于是tomcat业务,代码是java,我容器里把代码自动打成了war包,所以访问的格式是这样,并且能在web直接访问):
可以看到,使用xxx.xxx.57.182:8080/container_name/file/filename访问的内容,就是svn根目录里的内容。
登陆容器,在代码目录下可以看到一个以container_name命名的war包,里面包含SVN库中所有的文件。
修改一下SVN里test6.jsp文件内容如下,并且提交之后当前版本是14:
然后,进入程序开发模块,并选择update把14版本内容发布:
点击确定等待结果:
登录WEB界面查看,结果有了相应的变化:
自然,平台也提供了代码回滚功能,即如果我想将代码回滚到版本13,步骤如下:
点击确认后,再回到WEB界面查看,代码已经回到先前的版本13:
测试需求二:对基于存放git库的php代码进行快速部署与测试
首先查看一下git库信息:
这个是一个gitlab服务,里面有几个文件,先看看test3.html内容:
接下来,利用我们的CaaS平台来构建PHP模式的测试项目:
选择好Nginx-php的镜像,然后输入git信息,之后就可以直接创建了:
这次不使用公网IP,直接使用防火墙,通过宿主机IP+自动生成的端口进行外网访问,并允许我公司的公网IPxxx.xxx.170.157/32访问容器的80端口:
这个规则就是允许外部访问端口为40005,因此我们通过宿主机ip+40005端口访问查看结果:
浏览器中返回的内容便是先前在git库中查看内容。接着我修改git代码信息如下:
返回平台,更新代码:
再通过WEB页面访问,会看到返回已经有了相应的变化:
同理,我们来进行一次回滚测试。我们使用git log 查询到之前版本的hash:
回滚到上图选定的版本,可以在平台如下配置:
提示成功后,查看WEB 页面,可以看到已经回滚成功:
至此,本次测试的2个实例都已经成功完成!
以后开发使用这个平台就可以快速的进行代码测试,中间不需要运维参与,大大的节省了中间的很多环节与时间,能对公司的deveop快速代码部署有很大的方便。
如何实现?
前端使用tornado+bootstrap,后端是python,通信使用socket+ssl。
我这里仅提供一下我是如何使用docker做半自动化代码部署,介绍一下功能与其他截图,大家可以自己根据需求来开发。
本文转自 reinxu 51CTO博客,原文链接:http://blog.51cto.com/dl528888/1685148,如需转载请自行联系原作者

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
docker高级应用之集群与auto scale
之前介绍过docker的单机安装、多主机网络互通、如何半自动化更新与回滚代码,现在在介绍如何进行集群与auto scale。 集群通信软件 这部分功能使用Python语言编写,基于TCP Socket与SSL加密通信。我们来看下效果展示: 查看所有节点信息: (软件名是cdocker,分为客户端与服务端,服务的名字是cdocker_server.py,客户端名字是cdocker_client.py,感谢@陈李粮帮我起的名字) 上图的返回信息显示当前集群有3个节点(Node)、存放位置与类型(Metadata)、机器唯一标识(Machines_id)、当前宿主机创建容器数量(Container_now_user)以及最大可以使用容器的数量(Container_max_use)。 这个程序中也包含了部分Mesos等功能,可以计算集群里可用资源情况,并显示具体已使用与可最大使用数量。 查看具体节点里容器信息 集群模块还有其他的功能,比如创建集群、创建auto_scale等,今天我就给大家展示web界面,后台实现不再详细介绍。 上图为集群总览界面,包含了当前集群的部分信息。左上角可以创建集群:...
- 下一篇
排错经历:openstack搭建dashboard进入输入帐号密码登录后报错
查看error日志: cat /var/log/httpd/error.log [Thu Oct 13 13:37:00 2016] [error] raise exceptions.ConnectionFailed(reason=_("Maximum attempts reached")) [Thu Oct 13 13:37:00 2016] [error] ConnectionFailed: Connection to neutron failed: Maximum attempts reached neutron日志显示neutron的用户密码: cat /var/log/neutron/server.log perationalError: (OperationalError) (1045, "Access denied for user 'neutron'@'controller' (using password: YES)") None None 进入mysql查看果然: [root@controller images]# mysql -uroot -p123456 mys...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS8编译安装MySQL8.0.19
- Linux系统CentOS6、CentOS7手动修改IP地址
- 设置Eclipse缩进为4个空格,增强代码规范
- Windows10,CentOS7,CentOS8安装Nodejs环境
- CentOS6,CentOS7官方镜像安装Oracle11G
- CentOS7,CentOS8安装Elasticsearch6.8.6
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- SpringBoot2整合Redis,开启缓存,提高访问速度
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程