我今天看到一篇网友分享的 php 环境下的Docker持续集成案例。笔者大胆的试用后尝到了容器技术的甜头,也在文中提出了一个没有解决的困惑。 原来他是把代码放在容器外面,通过挂载目录的方法把代码加到容器里面运行的。这样虽然跑起来很快,但笔者感觉这和 Docker 的口号 build、ship、run 还是有很大的区别。当然,他把代码放在镜像里,每次变动都需要花上十几分钟等镜像build,push 到仓库后才能run发布,这个过程笔者也接受不了。这个网友的疑惑是构建镜像本身拖慢了集成的速度,这和一般情况下采用新技术能提高生产力的故事在直觉上是说不通的。
我想提提自己的看法。首先,Docker镜像本身是一个压缩包,每次即使只改几个文件,也需要把整个项目压缩一遍,没法增量压缩。所以,如果你的开发过程中需要频繁的改内容的时候,用 Docker 先打镜像再发布的流程就是一种反作用力,直接降低你的生产力。这个时候,你巧借 Docker 容器的环境一致性,直接把源码挂载到容器里面运行的做法应该是一个好办法。
我也意识到 Docker 对 CI这一块并没有考虑那么周到,还是需要我们自己来解决遇到的问题。比如本地的测试,可以考虑使用 vagrant 来解决,如下面的例子,很巧妙:
如果我们把 CI 的问题再扩展到 CD,上面源码是否放到镜像里面,仍然有很多可以讨论的地方。对于 Docker 的 build,ship,run一样有很多冲突,我是这么理解的:
上面的困惑虽然小,也能让我们看到 Docker 的使用是需要花心思的。盲从的乱用 Docker 并不能给你带来甜头,反而会让你更烦恼。希望大家一起探讨起来,一起发现一些困惑,一起来探讨解决。
肖德时先生现任数人云CTO,在数人云负责下一代DCOS组件的选型和整合,让众多DCOS
组件能无缝连接,提供支持微服务架构下轻量级PaaS平台。
肖德时先生曾就职于多家知名IT公司,擅长企业级工具软件的设计及实现,拥有十五年计算机行业从业经验。2010年肖德时先生加入Redhat,担任内部工作组Team
Leader。
”老肖语录“是肖德时先生推出的个人公众号栏目,他利用这个公众号记录自己创业路上的点点滴滴,不时会有精彩的技术感悟与分享,欢迎大家关注。