第23天 🐳 Dockerizing a 3-Tier MERN App & Diving into ITSM Tools

发布: (2026年1月1日 GMT+8 23:56)
3 分钟阅读
原文: Dev.to

Source: Dev.to

Cover image for Day-23 🐳 Dockerizing a 3-Tier MERN App & Diving into ITSM Tools

今天是我 DevOps 之旅中的一次重大进展。我不再只是单独运行容器,而是完成了对完整的 3 层 MERN 应用(MongoDB、Express/Node、React)的 Docker 化。

🏗️ 项目概述:3‑层架构

我不想在三个不同的终端里分别执行 npm start,而是想把整个栈都容器化。

  • 前端: 在容器中运行的 React
  • 后端: Node.js/Express(API 层)
  • 数据库: MongoDB(持久化存储)

🐙 使用 Docker Compose 进行编排

今天真正改变游戏规则的是 Docker Compose。编写 docker‑compose.yml 让我能够在一个文件中定义所有三个容器的生命周期。

  • 为客户端、服务器和数据库定义了服务。
  • 设置了网络,使它们能够相互通信(使用服务名作为主机名)。
  • 配置了卷以实现数据持久化。

现在启动整个环境只需运行:

docker-compose up --build

🐛 “Gotcha” 时刻

没有错误的编码日子是不存在的。一切在本地环境运行完美,但一启动容器就因二进制兼容性错误而崩溃。

问题出在 COPY . . 命令把我本地基于 Windows 的 node_modules 复制进了 Linux 容器。由于 esbuild 等二进制文件是与操作系统绑定的,Linux 容器无法运行 Windows 的二进制文件。

我是如何解决的

  1. 创建 .dockerignore 文件,显式排除 node_modules.git
  2. 删除损坏的镜像。
  3. 使用 --no-cache 标志重新构建镜像,以确保全新安装。

更新配置后,容器之间的通信恢复正常。

🏢 代码之外:ITSM 工具

在等待构建的间隙,我回过头来学习 DevOps 的“流程”层面。我了解了:

  • Jira 与 Confluence: 任务跟踪和文档管理。
  • ServiceNow: 事件管理(处理故障)和变更管理(安全部署更新)。

了解这些工具如何嵌入 CI/CD 流水线,对在企业环境中工作至关重要。

🚀 接下来是什么?

我已经掌握了 Docker Compose。自然的下一步是什么?大规模编排。明天我将开始深入 Kubernetes(K8s)。迫不及待想看看 pod 和 service 与今天的实现有何不同。

LinkedIn:

Back to Blog

相关文章

阅读更多 »

RGB LED 支线任务 💡

markdown !Jennifer Davishttps://media2.dev.to/dynamic/image/width=50,height=50,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%...

Mendex:我为何构建

介绍 大家好。今天我想分享一下我是谁、我在构建什么以及为什么。 早期职业生涯与倦怠 我在 17 年前开始我的 developer 生涯……