跳到主要内容

Docker Compose 本地开发环境编排

· 阅读需 2 分钟
一介布衣
全栈开发者 / 技术写作者

Docker 在 2021 年已经不再只是“服务器上部署用一下”了,越来越多团队开始把它往本地开发环境里推进。尤其是 Node.js 项目一旦依赖 Redis、MongoDB、MySQL 这些组件,大家机器上的环境差异会很快变成协作成本。

这时候 Docker Compose 的价值就很直接: 把一组开发依赖收成一份团队共识。

Compose 解决的不是“能不能启动”,而是“能不能统一”

本地环境最常见的问题不是组件装不上,而是每个人装出来都不一样:

  • 端口占用不同
  • 数据库版本不同
  • 初始化方式不同
  • 某些环境变量忘了配

Compose 的意义,就是把这些差异收进一份可执行配置里。

version: '3.8'

services:
api:
build: .
ports:
- '3000:3000'
environment:
NODE_ENV: development
REDIS_HOST: redis
MONGO_URL: mongodb://mongo:27017/blog
depends_on:
- redis
- mongo

redis:
image: redis:6
ports:
- '6379:6379'

mongo:
image: mongo:4.4
ports:
- '27017:27017'

对 Node.js 项目尤其友好的地方

Node.js 服务很多时候是轻业务层,真正复杂的是依赖项。把 Redis、Mongo、消息队列这类外围服务编排起来,本地开发体验会稳定很多。

我觉得 Compose 最适合的场景包括:

  • 新同学快速拉起项目
  • 多服务本地联调
  • 模拟接近线上的一组依赖环境

不要一开始就把 Compose 写成生产编排

很多人刚接触时会把本地 Compose 配得过于复杂,试图一步到位模拟生产。其实没必要。

本地开发版本更应该关注:

  • 能快速启动
  • 配置足够透明
  • 数据可重置

只要满足这三点,它就是合格的。

一个很实用的约定

我建议把下面几类信息明确下来:

  • 对外暴露哪些端口
  • 哪些卷需要持久化
  • 哪些变量必须走 .env

这会让整个团队后续少很多“我本地可以、你本地不行”的沟通成本。

小结

Docker Compose 对 2021 年的 Node.js 团队来说,很像一块工程化地基。它不一定最炫,但特别实用。把本地依赖环境收成一套标准后,协作效率会提升得很明显。