Docker Compose
图形化拼装 docker-compose.yml:填写镜像或构建上下文、端口、卷、环境变量、depends_on、重启策略、健康检查与网络,实时预览并一键复制。
浏览器本地运行所有计算都在你的浏览器里完成,数据不会离开本机。
服务列表
每个服务填写镜像或构建上下文;端口、卷、环境变量按行填写,一行一条。
预览
services:
web:
image: "nginx:1.27-alpine"
restart: unless-stopped
ports:
- "8080:80"
depends_on:
- api
networks:
- app
api:
build:
context: "./api"
environment:
- "APP_ENV=production"
- "PORT=3000"
volumes:
- "data:/var/lib/data"
networks:
- app
healthcheck:
test: ["CMD-SHELL", "curl -f http://localhost:3000/health"]
interval: 30s
retries: 3
networks:
app:
driver: bridge
volumes:
data:
输出对齐 Compose 规范,不再写已废弃的顶层 version 字段;命名卷会自动声明到顶层 volumes,服务用到的网络会汇总到 networks。
这个工具能做什么
- 本地起一套 web + 数据库 + 缓存的开发环境时,按服务逐个填镜像、端口、环境变量,一次得到完整 compose 文件。
- 把散落的 docker run 参数整理成声明式配置:端口、卷、环境变量、depends_on、重启策略都写在文件里,团队成员直接 docker compose up。
- 给服务加健康检查与依赖顺序,避免数据库还没起来应用就崩掉。
- 拿不准 compose 语法时先在这里拼出来,实时预览能立刻发现写错的端口或卷映射格式。
示例
输入
web:镜像 nginx:1.27-alpine、端口 8080:80、网络 app、依赖 db;db:镜像 postgres:16-alpine、环境 POSTGRES_PASSWORD=secret、卷 pgdata:/var/lib/postgresql/data、网络 app
输出
services:
web:
image: "nginx:1.27-alpine"
ports:
- "8080:80"
depends_on:
- db
networks:
- app
db:
image: "postgres:16-alpine"
environment:
- "POSTGRES_PASSWORD=secret"
volumes:
- "pgdata:/var/lib/postgresql/data"
networks:
- app
networks:
app:
driver: bridge
volumes:
pgdata:
端口、卷、环境变量都用双引号包起来,避免 YAML 把 8080:80 当成数字;命名卷 pgdata 会自动声明到顶层 volumes。
常见问题
为什么生成的文件里没有 version 字段?
从 Compose Specification 开始 version 已经废弃,docker compose v2 读到它只会打印一条警告。现在只需要顶层 services,加上可选的 networks、volumes、configs 等,所以工具不再写这个字段。
depends_on 能保证服务已经就绪吗?
不能。depends_on 只保证启动顺序(先起 db 再起 web),不等待 db 真正可以连接。要让 web 等到数据库就绪,给依赖的服务配健康检查,或在自己的启动脚本里做重试等待。
卷映射为什么有的要声明、有的不用?
形如 ./data:/data 的绑定挂载直接映射宿主机路径,不需要声明;形如 pgdata:/var/lib/postgresql/data 用的是命名卷,必须在顶层 volumes 里声明,否则 Compose 会报错,所以工具会自动补上。
环境变量写成列表和映射有什么区别?
列表写法 KEY=value 与映射写法 KEY: value 在 Compose 里等价,只是映射写法要小心值里的冒号与数字被 YAML 重新解释(例如 yes、1.0)。列表写法更不容易踩坑,所以生成器统一用列表。
生成的 YAML 会因为我填错格式而失效吗?
不会。服务名、端口、卷、环境变量、健康检查都会先校验,格式不对会直接提示具体是哪一类问题(例如端口要形如 8080:80),不会输出一份无法解析的 YAML。
关键词:docker composedocker-compose.ymlcompose generatordocker-compose 生成compose filedepends_onhealthcheckdocker networkdocker volume容器编排多服务yaml 配置