勾选需要的服务,生成的是 compose.yaml(compose 规范文件)。数据库类服务会自动带数据卷持久化与健康检查,Web 运行时服务会通过 depends_on 等待数据库就绪,避免启动时连不上库而反复重启。
工具说明
本地开发环境最容易出问题的不是代码,而是环境起不来:数据库还没就绪应用就开始连、数据没挂卷重启就丢、端口撞车。本工具把这几件事在生成的配置里一次性处理好——数据卷持久化、健康检查、启动依赖顺序都写进去了。
几个默认约定
- 数据卷:数据库与消息队列类服务自动挂载命名卷,容器重建数据不丢。
- 健康检查:数据库类服务带 healthcheck,Web 运行时通过 depends_on 的 condition 等它真正就绪,而不是等容器启动。
- 端口:主机端口从你设定的起始值依次分配,避免与常用端口冲突;容器内端口保持各服务镜像的默认值。
- 凭据:数据库密码默认走环境变量,方便在 .env 文件里覆写,不要把生产凭据写进这个文件。
生成之后怎么用
- 把内容保存为项目根目录的 compose.yaml。
- 同目录新建 .env,把密码类变量覆盖成自己的值。
- 执行 docker compose up -d 后台启动,用 docker compose logs -f 看日志。
- 停止并保留数据用 docker compose down;连数据一起清掉加 -v 参数。
安全提醒
生成的文件里出现的密码只是占位示例。请勿把真实密码提交到代码仓库;本地开发建议用 .env 加 .gitignore 的组合,生产环境请使用密钥管理服务。
你可能还想问
depends_on 加了健康检查条件,为什么应用还是连不上数据库?
健康检查只能保证数据库进程在接受连接,不能保证初始化脚本已经跑完。首次启动时数据库要建库建表,可能比健康检查通过的时间更晚。稳妥的做法是在应用侧做重试连接(指数退避几次),而不是完全依赖编排顺序。
数据卷删不掉是怎么回事?
命名卷由 Docker 管理,不随容器删除而消失,这是设计如此——正是为了保住数据。要彻底清理,用 docker compose down -v 会在停止容器的同时删除卷。注意这一步不可逆,执行前确认数据确实不需要了。
主机端口被占用怎么办?
改主机端口即可。生成配置时主机端口从你设定的起始值依次分配,避开常见冲突;如果某个端口已被本机其它程序占用,换成别的数字就行,容器内端口不用改,所以容器之间互相访问的地址不受影响。
能直接用于生产环境吗?
不建议。这份配置面向本地开发与测试:密码走环境变量不够安全、没有配置资源限制与日志轮转、也没有做多副本与滚动更新。生产环境请使用编排平台或云托管服务,并补齐密钥管理、资源配额、监控告警与备份策略。
速查在线工具箱