忍 Docker 很久了。
最烦的事情,Docker 镜像非要把它祖宗十八代的依赖都下载一遍,把整个 npm 仓库都快搬到电脑上了,然后我就眼巴巴地看着 CI/CD 流水线跑了 15 分钟……而且,这已经不是一次了。
我那台小破电脑风扇狂转,就为了启动几个根本没那么复杂的应用。改一行代码,想在本地看看效果,结果光是等镜像重新 build 就够喝杯咖啡了。
而我到底是为了什么?
不就是为了运行一个需要用到 Python、 Rust 、Node.js 和 PHP 的项目,再配上 Redis 和 PostgreSQL 吗?
这又不是在造火箭。
但我一直以为我在做正确的事。Docker 听起来多牛逼啊:环境隔离、生产一致、无限扩展。可我得到的只有复杂性、写 YAML 写到想吐,以及一个三天两头就闹脾气的本地环境。
直到有一天,我……不伺候了。
我把 Docker 从我的工作流里彻底删了个干净。
结果,天没塌下来。
反而,整个世界都美好了。
我用什么取代了 Docker?答案是 ServBay
就算被人打,我也要说:大多数开发者并不需要 Docker,他们真正需要的,只是一个靠谱、能说清楚的 开发环境 。
于是我问自己:我到底在用 Docker 干嘛?
1. 本地开发环境?Docker 用力过猛了。
我的项目里有 React 前端、Node.js API、Python 数据服务、一个老旧但重要的 PHP 模块,还有一个 Rust 写的高性能工具。
以前,这一切都挤在笨重的 docker-compose.yml 文件里。现在,我用 ServBay,一个集成开发工具。它让我可以在图形界面里,像选妃一样选择我想要的 PHP、Node.js、Python 版本,数据库和 Redis 这种服务也都是一键启停。
结果呢?零压力,零心智负担,快得飞起。
2. CI/CD 构建?Docker 就是个累赘。
Docker 镜像曾经是我 GitHub Actions 里的噩梦,一个微服务的构建,随随便便就花掉12 分钟。
现在?我直接用 GitHub 官方预装好环境的 runner,跑几行干净的 shell 脚本。没有 Docker-in-Docker,没有镜像推拉,没有缓存失效的地狱。
我的 CI 现在 3 分钟 就能跑完。每一次,都是如此。
“但……生产环境和开发环境的一致性怎么办?”
宝子,这话我听得耳朵都快起茧了。
“Docker 能保证开发和生产环境的一致性!”
醒醒吧,它压根保证不了。
除非你严格锁定了 Dockerfile 里每一个基础镜像和软件包的版本,并且每次变更都强制重新构建,否则你的容器环境总是在悄无声息地、危险地漂移。
我遇到过多少次「在我机器上明明好好的」,一到预发环境就爆炸?为什么?可能是基础镜像某个底层依赖更新了,可能是 Alpine 的一个包变了,也可能是某个该死的缓存层出了问题。
自从我换到 ServBay 并采用.servbay.config 部署后,我遇到的环境不一致的 bug 反而更少了。为什么?因为活动部件更少,版本控制更清晰,开发环境更透明。
真正的原因:你根本不信任你的开发环境
Docker 变成了一个创可贴,它掩盖了这些真正的问题:
-
乱七八糟的文档
-
每个人的本地环境都是一个特定环境,配置五花八门
-
混乱到让人破防的新人上手流程
但其实这些都是流程问题,不是容器问题。
当我扔掉 Docker 后,我被迫把环境搭建的步骤记录得清晰明了。而有了 ServBay,这个过程简单到只有一句话:“下载 ServBay,勾选需要的服务,点击启动。”
我目前的数据是:
-
构建时间: 从 12 分钟 → 3 分钟
-
新人上手时间: 从 2 小时 → 15 分钟
-
硬盘占用: 从 20GB+ 的 Docker 镜像 → 不到 500MB
-
心智负担: 我终于搞懂我自己的技术栈了,再也不用研究「为什么这个容器连不上那个容器」这种玄学问题了。
别再为了一个待办事项 App 去攒一套 K8s 了
你有没有见过一个开发者,唾沫横飞地向你解释他那个 To-Do App 的微服务架构?
“好家伙,我们这儿有一个任务创建服务,一个通知服务,用了 Redis 做缓存,RabbitMQ 做消息队列,数据存在 PostgreSQL,然后这一切都由 Kubernetes 编排……”
哎呀妈呀,听起来真牛逼。
但实际上,真正需要的可能只是:一个 Express.js 服务,一个数据库,再加一个定时任务。
但我们不,我们把所有东西都容器化,增加了五层抽象,把自己埋在 YAML 的海洋里——然后花大量时间去调试为什么 K8s 的 Ingress 路由不到我的服务。
说一句你不爱听的:开发者常常把工具的复杂性,误当作工程上的成熟度。 好像不把 YAML 写出花来,就显得自己不够专业。结果呢?大部分时间都耗在了跟工具的斗争上,而不是去交付价值。
当然,我不是要一杆子打死 Docker。 在某些场景下,它依然是利器。比如需要极端安全隔离、分发复杂的非 Web 应用。
但在我日常的 Web 开发工作中,它就是一种杀鸡用牛刀的设计。
我需要的不是一个能模拟整个数据中心的工具,我只是需要一个能让我快速、稳定地运行代码的环境。而 ServBay,恰好就做到了这一点。
所以说
你需要的不是容器。
你需要的是清晰、纪律,以及一个你真正能掌控的技术栈。
最重要的是:
别再为了在技术圈子里显得潮而折腾了(潮得我都要风湿了),开始为速度、理智和交付产品而工作吧。