前几天,我们团队 CI/CD 流水线挂了,一个新来的前端同事跑来问我:“老大,我本地 pnpm build 明明是好的,为什么一到 CI 就报错?”

我看了看日志,node-gyp 编译失败。我问他:“你本地的 Node 版本和 CI 里的版本一致吗?操作- 系统呢?”

他一脸茫然:“啊?CI 里还有 Node 版本?”

我叹了口气,把我们项目的 Dockerfile 发给了他:“你先看看这个吧。”

这个场景,在我的日常工作中越来越常见。这也让我开始思考一个问题:前端开发,真的有必要学 Docker 吗?

在上古时代(大概5、6年前),答案可能是否定的 #前端 #JavaScript #Docker #金石焕新程。那时候,前端的职责就是产出一个 dist 文件夹,然后通过 FTP 或者别的什么工具,扔到 Nginx 服务器的某个目录里,工作就结束了。

但在2025年的今天,我的答案是:是的,非常有必要。

如果你还想在高级工程师这条路上走得更远,如果你不想只做一个切图仔或页面仔,Docker 是你必须迈过的坎。

我们先不聊高大上的架构,就说一个最现实、最痛的痛点。

前端开发,早就不是只有 HTML/CSS/JS 了。我们有 Node.js、pnpm/npm、Python( node-gyp 可能需要)、Nginx... 我们的开发环境,变得 极其脆弱和复杂 。

在我电脑上是好的啊! —— 这句话,是团队协作效率的头号杀手。

而 Docker 是干嘛的?它就是用来解决环境不一致问题。它用一个 Dockerfile 文件,以代码的形式,定义了你的应用运行所需要的一切环境 :

“我这个项目,必须跑在 Debian 12 上,必须用 Node 18.12.0 ,必须用 pnpm 9.1.0 ,必须先装好 libvips 这个库。”

它把这个环境,打包成一个“镜像”(Image),然后在你、你同事、CI/CD、生产环境的电脑上,启动一个一模一样的容器(Container)。

从此,再也没有环境不一致这种低级错误了。

很多前端同学还没转过这个弯儿:我只是个做 UI 的,环境关我屁事?

现实是:你写的前端代码,早就是后端服务了。

恭喜你,你写的这些,本质上就是一个 Node.js 应用 。它是一个需要 长期运行的、监听端口的、处理高并发的服务 。

对于一个服务,你怎么部署它呢?

你总不能 ssh 到服务器上,手动 git pull ,然后 pnpm start ,再用 pm2 守护进程吧?这也太石器时代了。

现代化的部署流程,就是把你的 Next.js 应用,打包成一个 Docker 镜像,然后交给 K8s(或类似的平台)去发布、扩容、缩容。

你作为一个开发者,如果你连你的服务该如何被打包、如何运行都不知道,你觉得合适吗?

我这么说,不是为了贩卖焦虑,让你马上去啃《 Docker 从入门到精通 》。

作为前端,你不需要成为 DevOps 专家。但在我看来,你至少需要掌握两个层次的能力:

这是最基本的要求。你必须能看懂项目根目录下的 Dockerfile 和 docker-compose.yml ,并且能在本地把项目跑起来。

比如,你必须能看懂一个给 Next.js 项目写的、包含多阶段构建的 Dockerfile :

你至少要能看懂:

你不仅要能看懂,还要能 从0到1写出来 。

更进一步,你需要能用 docker-compose.yml ,在本地编排一个完整的开发环境。比如,同时启动你的 Next.js 应用、一个 PostgreSQL 数据库、一个 Redis 缓存。

有了这个文件,新同事入职,只需要 docker-compose up ,一个包含了数据库、缓存、后台服务的 完整开发环境 ,就在他的电脑上跑起来了。

这,才叫 工程化!!! 。

--- 前端开发,早就不是那个切切图、调调样式的岗位了。

Docker,是前端工程师从页面仔走向全栈工程师的必备工具之一。

它是现代软件开发的基础设施。它把你、你的同事、运维、以及你的服务器,拉到了同一个频道上。

所以,别再问我,有没有必要学了!!!

如果你还想在这个行业里,更有竞争力地走下去,那就马上去学,别犹豫

标签: none

添加新评论