程序员开发环境docker_基于docker集群的开发环境

322db6fee4a0ffe94314ca28939d98ec.png

在测试以及生产环境中使用docker,应该已经是非常普遍;但其实在开发环境中,也是可以利用docker。

我不是说在开发环境下使用docker去跑个数据库,而是说100%的将开发环境也部署在docker中,即工程师使用的桌面、IDE等等全部都是运行在docker之中。

这应该也不是什么新鲜的做法,在虚拟机开始流行的时代,便有vagrant这样的产品:https://www.vagrantup.com/ 便于开发环境的搭建。

其好处也显而易见:新员工入职不需要再花个一两天甚至一周去“搭建开发环境”。

入职后,只要在开发机上把虚拟机跑起来,那么环境也就搭建完毕,也就是半天甚至几分钟的事。

但这样做,还是有些许限制,即需要给每个员工配备性能强劲的台式机,或者笔记本;笔记本的话,往往也就意味着是Macbook Pro了。

从设备折旧,甚至开发体验上来说,其实可以更进一步的:把开发环境跑在docker集群上。

没错,也就是七八十年代流行的终端 + 主机的模式。

IT运维把集群搭建起来,员工入职的时候,就分配一台性能一般的电脑作为终端,这里终端设备重要的是显示器、键盘鼠标等;CPU、内存等则不重要,这台机器只要能跑VNC远程桌面登录即可。实际上,我觉得现在一些手机都能胜任:

  • USB type-c接4K的显示器
  • 接蓝牙键盘
  • 连Wi-Fi

除了终端,IT运维需要给员工配备的是运行在集群上的虚机,然后,再在虚机上面把开发环境的docker跑起来;当然,绕过虚机,集群能够提供docker也行。

提供虚机的话,是把管理职责分隔一下,即运维只负责虚机的维护,确保集群能够满足团队需要的虚机数量、性能;至于虚机上面跑的开发环境是啥,IT运维可以完全不关心。

员工拿到虚机之后,则应该可以随意选择去跑适合自己口味的docker镜像,喜欢ubuntu的就ubuntu,喜欢CentOS的就CentOS;做go后端开发的可以有适合go的docker,做前端的可以有node的docker。

这里的重点其实不是“统一开发环境”,而是让研发团队,可以有一个“平台”来快速交换开发环境。

员工入职时候,小白可以选择跟着使用大神的环境;而小白也可以在使用的过程中,去修改镜像,然后提交去内部的docker hub,提供给其他同事使用。

通过把home目录映射到虚机上,也可以实现docker开发环境升级、变更的时候,保留之前的工作目录。

这样一套环境,慢慢的自然可以在团队内部形成不同的“流派”,然后大家自发的去维护。

如此一来即解决了入职时快速上手的问题,也有利于营造团队内部的技术氛围、交流;从成本的角度看,也肯定要比给所有人都配高配的Macbook Pro低,而性能也是极佳。

作为程序员来说,也再也不用上下班背笔记本了,有网络,能够登录内网集群就可以畅快开发了。

注意,是“内网集群”,所有的数据、网络访问也都是可控的,我猜想企业的安全部门,也会非常喜欢这点。

当然,搞这么一套开发环境需要投入,也有一定的技术门槛,小团队,投入去搞这些我觉得划不来,猜想适合有百人以上的开发团队去搞;而完善之后,会是多赢;而如果是千人的开发团队,我认为类似的方案就会是必不可少的。


版权声明:本文为weixin_30464195原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。