作者:姚杨 | 专栏:阿杰的技术成长
飞机起飞前,阿杰 合上超低配的 MacBook——上面跑着整套开发环境,离线也能写代码。他想起老陈 有次问他的话:「你折腾了十几年开发环境,图什么?」阿杰 当时没答上来。直到最近他把 AI 也「装」进了容器,才想明白那句话。
一、2011 年:第一家公司,雅虎系老团队教会我的三件事
阿杰 的第一家公司,开发团队是雅虎体系出来的老牌团队——作风优良、技术专业。他的工作单元思想、OOP 思想,全是那时学的。
那个年代,公司会在办公室服务器上给每个开发者开一台虚拟机,模拟生产环境的系统版本、数据库版本、参数,让大家提前发现问题。
但痛点也是那个年代特有的:开发电脑是 Windows,代码的编码、换行符和生产环境的 Linux 不一致,加上文件同步的各种低级错误——这些枯燥无聊但又必须要关注的问题,每天都在消耗人。
阿杰 当时正好在推进开发环境的事,他一咬牙:全员装 Ubuntu,肉身学习 Linux。 然后在 Linux 下装 VirtualBox,用共享文件夹——VirtualBox 里是开发的运行环境,Ubuntu 是开发机。
「这套模式推下去,开发效率极大提升,低级问题一扫而光。」老陈 点头:「你从第一天起就明白一件事:环境问题,比代码问题更能吃掉一个团队的效率。」
二、Vagrant 时代:虚拟机管理,被一个文件取代
第二家公司时,正好流行 VAGRANT——它把虚拟机管理直接文件化了。
「在我原来方案的基础上,开发人员搞一个文件,就能自动化初始整个开发环境。」阿杰 直接在第二家公司推行了 vagrant + 本地虚拟机开发模式,效率大大提升。
「这一步的关键不是工具,是思路:环境从『手搓』变成了『声明』。 一个 Vagrantfile 就是整个环境的说明书,团队不用再口口相传怎么配环境。」
三、2017 年:Docker 来了,一切都轻了
2017 年,Docker 在国内刚有苗头。阿杰 一看:「这不模式类似吗?但更轻——进程级虚拟化,秒启动。」他开心死了,立马把开发模式改成 Docker 实现。
那个阶段,他一度移动办公到用苹果超低配便携本直接办公,还是离线开发——环境就在自己电脑上,上飞机也能写。
而真正让他惊艳的是 --rm 模式:关闭就删容器,每次启动都是全新的。
「这正好解决一个问题:开发环境用久了,里面的垃圾数据越来越乱、表结构跟最新版本对不齐。而 --rm 逼迫研发团队必须把表结构好好维护在 migration 体系里,把常用的开发自测数据写在 seed 里。」
「一上这套体系,团队立马清爽了。代码里 migration 未维护的问题直接消失,而且每个开发者都喜欢给自己新开发的功能写 seed——别人继续开发、调试时,轻松又惬意。」
老陈 听到这,补了一句:「你发现没有,Docker 最值钱的不是『轻』,是『扔得起』。一个每次都能从头再来的环境,逼你把『环境里该有的东西』都代码化——表结构进 migration,数据进 seed,谁也别想偷偷在环境里手工改。」
四、2026 年:大模型疯了,我把它关进镜像空间
2026 年,OpenClaw 火了,Harness engineering 火了,大模型智商高了。
「这批疯马,战斗力让人看到无限可能,但也让人恐惧它乱搞。」阿杰 说,「我联想到《奇异博士》里古一用镜像空间控制敌人、不让破坏波及现实世界的用法——这不就是容器擅长干的事情吗?」
于是就有了 harness_engineering_php_env 这个容器仓库:
- 给大模型和 Claude Code 一个完整的开发环境容器,随便它折腾去——反正启动时带
--rm; - 只留代码仓库文件同步在 Mac 电脑上——改动随要随取;
- git 来保护、快速拎出改动——AI 把环境搞烂了?删掉容器,重来。
「镜像空间里随便打,现实世界毫发无损。」阿杰 说,「这就是容器在 AI 时代的用法:把失控的成本,变成一次 --rm。」
五、尾声
飞机落地,阿杰 合上电脑,给老陈 发了条消息:「想明白你问的那句话了。我折腾十几年环境,图的就是一件事——让环境『扔得起』,让团队(和人)敢折腾。」
老陈 回得干脆:「从虚拟机到 Vagrant,从 Docker 到给 AI 的沙盒,你走的每一步,都是在给『折腾』买保险。环境不可变,人才敢乱来——这是容器哲学,也是 AI 时代的工程哲学。」
至于这套「环境即代码、用完即焚」的思路,怎么和 AI 编程的日常长在一起——那是下一个故事了。