码农小马与 Docker 不得不说的故事

作者:徐西宁,2006年毕业于华中科技大学,先后供职于上海三家知名和非知名外企,精通Java, Python/Django, Javascriptde.js, Docker和Test Automation. MDCC 2016大会讲师,开源项目LEP前端架构师。

我叫小马, 码农的马, 我是一个码农。

作为码农,我曾经有一个梦想:发财。很快,现实给了我几个耳光,我明智地放弃了这个想法。

作为码农,我还有第二个梦想:用优雅的代码解决实际问题!

我的工作是用Django做Web开发。老板说,Python很简洁,Django很高效,是Web开发的很好的选择。

老板虽然经常忽悠我,但是,这一次他没有。用Django做Web开发真的很高效,实现Feature的速度飞快。我感觉离第二个梦想近了一步。

Web开发的迭代很快,每次有新的feature,或者有bug fix, 我都需要重新部署测试服务器,交给小Q去测试。

小Q,QA,女,测试的高手,代码的白痴。

小Q总能找出我代码中的Bug,让我明白我还没有做到用代码优雅地解决问题,这让我很恼火。同时,因为她不懂代码,不知道我的代码的依赖环境,所以,重新部署测试服务器的活,就一直落在我身上。

虽然小Q明眸善睐,我也愿意有机会跟她多唠几句。但是,部署测试服务器这事频繁发生,我也有忙不过来的时候。于是,我写了一个文档,当我实在忙的时候,小Q以及其他人也可以照这个文档来做部署。

版本部署步骤:
1.     SSH连接到测试服务器
2.     运行PS命令查看进程列表,杀掉我们接下来要重新部署的Services
3.     CD到XXX文件夹
4.     git checkout到YYY Branch
5.     git pull最新的代码
6.     确认Python3已经被正确安装,并且版本>=3.4
7.     CD到XXX/ZZZ文件夹,用PIP安装依赖包
8.     运行USWGI9
9.     运行NGINX

在我眼里,这个文档就两步:

1.     随便搞搞
2.     搞定

在小Q眼里,这个文档是天龙88步:

1.     SSH连接到测试服务器
2.     。。。
3.     。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

87.  。。。。
88.  终于~~~搞定

在新来的实习生看来,这个文档是迷踪步:

当大家看不懂这个文档,或者照着文档操作碰到问题的时候,还是会来问我,这显得我比较重要。但是,我的时间不断地被打断,这让我很难专注敲代码,更别说敲出“优雅的代码”。

于是,我把这个文档的步骤用Shell脚本实现出来,这样,大家就不用阅读那个天龙88步的文档,只要跑一下这个脚本就好了。生活一下子美好了很多。

哪知道,快乐的日子永远是短暂的,留下的只是无穷无尽的痛苦和长叹。

用脚本实现了自动化部署,也有人抱怨说脚本不会用。于是,我写了一个文档,教大家如何用这个脚本。

码农的世界就是这么残酷,我写脚本的本意就是不要再写文档,现在,我既要维护脚本,还要维护文档。

事实证明,这个脚本还是能发挥作用,节省了大家很多时间。大家喜欢这个脚本,也提出了更多需求,于是,我花了更多的时间,让这个脚本能处理更多的情况,变得更强大,当然也更复杂。我在码Feature之外,还需要腾出更多时间维护这个脚本。

运维的兄弟小O也开始用这个脚本在生产服务器上进行部署。但是,他面临的条件更加险恶,因为生产服务器上还运行着一些历史版本,这些历史版本跟现在的版本的依赖环境还有一些冲突,小O需要更加小心翼翼,战战兢兢,如履薄冰。

虽说那是小O的活,但是,作为一个有责任心的码农,我也不忍心看着兄弟挣扎不是?

都是劳动人民,我们要团结友爱。我们的目标是把麻烦解决好,而不是推卸出去。

写更高质量的脚本,写更完善的文档,显然并不能解决这个问题。我的解决方案是:Docker!

Docker是一个轻量化的虚拟平台,可以让我很容易地把我的程序、我的程序配置、我的程序的依赖环境都封装在一个独立的程序包中,这个程序包被称为Docker Image. 任何安装了Docker的系统上(无论是Windows, Mac OS, Linux), 都可以轻易地运行我的程序,不用再操心配置,不用再操心环境依赖以及跟现有环境之间可能的冲突,Docker能够保证程序可运行,以及在不同环境下行为的一致性。

因为Docker的引入,测试小Q可以很轻松地搞定测试的环境,运维小O可以轻松地搞定生产环境的部署,而我,能够有更多的时间写“优雅的代码”。

这才是多方共赢!从此,小马,小Q和小O幸福地工作在一起!

我叫小马 码农的马 我是一个码农 我拥抱Docker ” ”

原创声明,本文系作者授权云+社区-专栏发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏维恩的派VNPIE

采集CTP数据到MySql的代码样例

vn.py目前所使用的数据库是MongoDB,鉴于一些用户更加习惯使用mySql,论坛内desont提供了一个vn.py与mySql相结合管理数据的示例,感谢d...

933
来自专栏镁客网

Win10惊天漏洞曝光,24核48线程高配电脑也能变鸡肋

1563
来自专栏信安之路

突破封闭 Web 系统的技巧之旁敲侧击

我将上面讲的"需要认证后才能进入系统进行操作,但是当前没有认证凭证"的 web 系统统一称为"封闭的 Web 系统",本文认为阅读人员有一定的渗透测试经验,并将...

1120
来自专栏数据和云

五重备份无一有效,还有哪些 rm -rf 和GitLab类似的忧伤?

DBA的悲伤,不是没有做备份,就是没有做有效的备份。日光之下,并无鲜事。 都说一个没有删过数据库的DBA,职业生涯是不完整的,不过当你删过之后,你的DBA生涯可...

2805
来自专栏FreeBuf

一大拨漏洞来袭,eBAY的黑色星期五

写在前面: eBay没有保护好自己用户的数据,在之前他也犯过类似的错误,但是这次显然eBay的安全团队没有吸取到前车之鉴。这次他们同样要为自己对安全的消极态度...

1715
来自专栏数据和云

DBA生存警示:系统级误删除案例及防范建议

编辑手记:对于资深的老DBA们,他们在漫长的职业生涯中养成了很多稀奇古怪的守则,以在复杂多变的环境中“幸存”,这源于无数血泪的教训,我曾经在《数据安全警示录》...

2724
来自专栏容器化

k8s踩坑记 - kubeadm join 之 token 失效

1885
来自专栏FreeBuf

三年前的libupnp库漏洞,腾讯QQ音乐终于修复了

由于3年前的一个漏洞,今天仍然有610万台设备可被远程代码执行,包括智能手机、路由器、智能电视等,而且这个漏洞早在3年前就已经修复。 该漏洞存在于UPnP™设...

1807
来自专栏张戈的专栏

妹子你真萌:一次心惊肉跳的服务器误删文件的恢复过程

刚在我的订阅里面看到这篇文章,在爆笑之余也让跟我一样的运维农民工们发人深省,所以转过来分享一下。妹子啊妹子,网上找的东西也不能直接照搬啊,太萌了~~哈哈! 作者...

39311
来自专栏老九学堂

有个程序猿很忧桑:一个命令rm -rf/ ,他把整个公司删没了...

▼ 话说 最近有个程序猿很忧桑 ....... ? 因为弄错了一行代码 这哥们不小心把他整个公司 删没了 没了 了 ... ? ? 好吧.. 事情是这样的.....

2635

扫码关注云+社区