docker/compose
运维与部署用一个 YAML 文件定义多容器 Docker 应用,并用一条命令启动。
Docker Compose 用于把由多个容器组成的 Docker 应用写进一个 Compose 文件,然后整体启动这些服务。它适合已经在使用 Docker、希望获得可重复的本地或测试环境的开发者和小团队,避免为每个服务手写启动命令。
改变了什么工作流程
不必再手动构建镜像并逐个启动容器,而是在 compose.yaml 中描述服务——构建上下文、端口、卷、镜像——然后运行 docker compose up。README 的快速开始是一个三步循环:先写 Dockerfile 定义应用环境,再在 Compose 文件中列出服务,最后把整套服务作为一个隔离环境启动。示例中 web 服务从当前目录构建并暴露 5000 端口,redis 服务则来自公共镜像 README 快速开始。
最终得到的是一份声明式配置,把服务配置集中在一起,启动、停止和分享同一套栈不再依赖记住每个容器的参数。
运行环境与安装方式
在 Windows 和 macOS 上,Compose 随 Docker Desktop 一起提供,因此安装 Docker Desktop 是常见路径 获取 Docker Compose、Docker Desktop。在 Linux 上,需要从仓库的 release 页面下载二进制文件,重命名为 docker-compose,赋予可执行权限,再放入 Docker CLI 插件目录——既可以是用户级的 $HOME/.docker/cli-plugins,也可以是文档列出的系统级插件目录 Linux 安装说明、releases。
需要了解的边界
- Docker 本身是前提。 Compose 在 Docker 之上编排容器,并不是独立的运行时。
- Swarm 是另一回事。 README 指出 Docker Swarm 从未采用 Compose 规范,因此部分较新的 Compose 语法和功能对 Swarm 用户不可用;在被 Mirantis 收购后,Swarm 也不再由 Docker Inc. 维护 README 关于 Swarm 的说明、Mirantis。
- 旧的 Python 实现属于 legacy。 它保留在
v1分支,当前开发的是 Go 代码库 legacy 部分。 - 旧讨论不代表当前行为。 2019 年有一个讨论关于 Compose 会读取
.env且无法关闭 HN 讨论,这应视为历史背景,而不是今天文档的描述。
适用场景
当项目已经运行在 Docker 上,并且需要一种可重复的方式在单机上启动多个相关服务——例如应用加数据库或缓存——Compose 是合理的选择。它本身不解决跨多主机的生产编排;这一角色历史上由 Swarm 承担,而 README 已标明 Swarm 不在 Docker Inc. 当前维护范围内。
项目采用 Apache-2.0 许可证,README 将为项目做贡献的读者指向单独的贡献指南和 issue 跟踪器 贡献。
本文由 AI 根据项目 README 生成,更新于 2026年10月29日,以项目官方文档为准。