本地开发环境最怕“只在某个人电脑上能跑”。Docker Compose 的价值不是把命令写短,而是让数据库、中间件、初始化数据和端口约定都能被团队重复启动。
服务要按职责拆清楚
一个 Compose 文件里可以放 MySQL、Redis、消息队列、对象存储和应用服务,但每个服务都要有清晰职责。镜像版本要固定,不要默认用 latest。端口映射要避免和本机常用服务冲突,数据卷要说明是否可以删除重建。
开发环境里的账号密码可以使用本机私有配置或 .env,但不要写进公共模板的真实值。模板里保留示例值,真实值留给本机。
初始化数据要可重放
数据库初始化脚本建议分成建表、基础字典、演示数据三类。建表 SQL 要保留中文表注释和字段注释,时间字段写清单位和时区语义。演示数据可以少,但要覆盖最关键的页面和接口。
如果本地数据经常被调试污染,最好提供一个“重建开发库”的命令。它不应该误伤生产库,也不应该依赖某个人手动导入一堆文件。
健康检查比启动顺序更重要
depends_on 只能表达容器启动顺序,不能保证服务已经可用。数据库还在初始化、消息队列还没创建 topic、对象存储桶还没准备好时,应用服务可能已经开始报错。
更稳的做法是为关键服务加 healthcheck,并让应用启动脚本在必要时等待依赖就绪。等待也要有超时,不能无限循环。
保留一条最小验证命令
环境启动后,至少要能跑通一个健康检查接口、一个数据库读写操作和一个核心业务接口。这样新人拉项目时不用猜“容器都起来了,为什么页面还是空白”。
Compose 文件写得好,本地环境就像一份可执行文档。它把依赖、端口、数据和验证路径收在一起,让开发机的差异不再变成协作成本。
正文完




