设为首页 收藏本站
查看: 1826|回复: 0

[经验分享] 使用docker实现半自动化代码自动部署与回滚

[复制链接]

尚未签到

发表于 2018-5-30 07:28:02 | 显示全部楼层 |阅读模式
  最近开发docker的caas平台,目前已经开发完成,在优化性能与套模板。对于docker最近是很好,很多人把docker做为vm来使用,当然作为测试来说是没问题,但我感觉docker本身在做沙箱、自动化部署与回滚方面更适合,下面介绍一下我这里是如何通过docker实现代码半自动化部署。
  目前我这里已经实现能结合svn或者git代码库,对node、php、java代码进行半自动化部署,先给大家截图看效果,感觉满意在继续细看。
  总界面如下
DSC0000.jpg

  点击左上角的“新增开放项目”就可以新建立测试,下面是功能截图:
DSC0001.jpg

默认情况下,这个操作跟容器创建类似,后期我也打算把容器管理跟程序开发管理合并。
  代码存放支持2种,分别是svn存放:
DSC0002.jpg

  以及git存放:
DSC0003.jpg

  平台支持PHP、node、java这3中代码类型,默认类型为PHP。
  接下来我们进入实测演练即如何使用平台进行快速代码更新:
我将通过2个测试实例来帮助大家理解。
测试需求一:对基于存放svn库的java代码进行快速的部署与测试
假如当前当前SVN库版本为13,文件内容如下:
DSC0004.jpg

  test6.jsp文件内容如下:
DSC0005.jpg

  接下来选择镜像(java代码,当然选CentOS6系统 + Tomcat镜像,然后输入好SVN信息)来创建测试:
DSC0006.jpg

  鉴于Tomcat比较费内存,所以选择1G的内存,ssh密码验证方式,然后创建测试:
DSC0007.jpg

  创建成功后,右侧会有弹框提示:
DSC0008.jpg

  下一步就是设置防火墙,或者绑定公网IP后再做防火墙。我们使用空闲IP xxx.xxx.57.182来设置:
DSC0009.jpg

  绑定成功之后,设置防火墙:
DSC00010.jpg

  默认是没有规则,所以规则一栏显示红色的无。
DSC00011.jpg

  新增完成后,再点击Apply(点击这个主要是防止修改错规则)生效。当前的防火墙规则为:
DSC00012.jpg

  如此,我们可以通过xxx.xxx.57.182:8080/container_name/file/filename来访问(由于是tomcat业务,代码是java,我容器里把代码自动打成了war包,所以访问的格式是这样,并且能在web直接访问):
DSC00013.jpg

可以看到,使用xxx.xxx.57.182:8080/container_name/file/filename访问的内容,就是svn根目录里的内容。
  登陆容器,在代码目录下可以看到一个以container_name命名的war包,里面包含SVN库中所有的文件。
   DSC00014.jpg
  修改一下SVN里test6.jsp文件内容如下,并且提交之后当前版本是14:
DSC00015.jpg

  然后,进入程序开发模块,并选择update把14版本内容发布:
DSC00016.jpg

DSC00017.jpg

  点击确定等待结果:
   DSC00018.jpg
  登录WEB界面查看,结果有了相应的变化:
DSC00019.jpg

  自然,平台也提供了代码回滚功能,即如果我想将代码回滚到版本13,步骤如下:
DSC00020.jpg

  点击确认后,再回到WEB界面查看,代码已经回到先前的版本13:
DSC00021.jpg

测试需求二:对基于存放git库的php代码进行快速部署与测试
  首先查看一下git库信息:
DSC00022.jpg

  这个是一个gitlab服务,里面有几个文件,先看看test3.html内容:
DSC00023.jpg

  接下来,利用我们的CaaS平台来构建PHP模式的测试项目:
DSC00024.jpg

  选择好Nginx-php的镜像,然后输入git信息,之后就可以直接创建了:
DSC00025.jpg

  这次不使用公网IP,直接使用防火墙,通过宿主机IP+自动生成的端口进行外网访问,并允许我公司的公网IPxxx.xxx.170.157/32访问容器的80端口:
DSC00026.jpg

DSC00027.jpg

这个规则就是允许外部访问端口为40005,因此我们通过宿主机ip+40005端口访问查看结果:
   DSC00028.jpg
  浏览器中返回的内容便是先前在git库中查看内容。接着我修改git代码信息如下:
DSC00029.jpg

DSC00030.jpg

  返回平台,更新代码:
DSC00031.jpg

DSC00032.jpg

  再通过WEB页面访问,会看到返回已经有了相应的变化:
   DSC00033.jpg
  同理,我们来进行一次回滚测试。我们使用git log 查询到之前版本的hash:
   DSC00034.jpg
  回滚到上图选定的版本,可以在平台如下配置:
DSC00035.jpg

  提示成功后,查看WEB 页面,可以看到已经回滚成功:
DSC00036.jpg

  至此,本次测试的2个实例都已经成功完成!
  以后开发使用这个平台就可以快速的进行代码测试,中间不需要运维参与,大大的节省了中间的很多环节与时间,能对公司的deveop快速代码部署有很大的方便。
  如何实现?
  前端使用tornado+bootstrap,后端是python,通信使用socket+ssl。
  我这里仅提供一下我是如何使用docker做半自动化代码部署,介绍一下功能与其他截图,大家可以自己根据需求来开发。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-482786-1-1.html 上篇帖子: 定制Dockerfile实现redis cluster的docker化部署及集群管理 下篇帖子: docker下images操作
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表