Docker Compose:一条命令跑起整个应用

Docker Compose 拿到了 37,000+ 的 Star,是 Docker 官方出品的多容器编排工具。

正文顶部截图

用 Docker 跑单个容器很简单,但真实项目往往涉及多个服务。数据库一个容器,后端一个容器,前端一个容器,可能还有 Redis、Nginx。手动逐个启动不仅麻烦,顺序出错还会导致依赖失败。

Docker Compose 解决的就是这个问题。它让你用一个 YAML 文件描述所有服务,然后一条命令把整个应用跑起来。

Compose 文件长什么样

一个典型的 compose.yaml 长这样:

services:
  web:
    build: .
    ports:
      - "5000:5000"
    volumes:
      - .:/code
  redis:
    image: redis

上面的配置定义了两个服务:一个从当前目录构建的 web 应用,一个使用官方镜像的 Redis。文件结构清晰,每个服务的镜像、端口、挂载卷都写在一起。

怎么用

整个流程分三步:

  1. 用 Dockerfile 定义应用环境,确保能在任何机器上复现。
  2. 在 compose.yaml 中声明所有服务,让它们能在隔离环境中协同运行。
  3. 执行 docker compose up,Compose 会自动处理网络、启动顺序和依赖关系。

启动之后,所有容器的日志会聚合输出到终端,方便排查问题。

安装方式

Windows 和 macOS 用户不需要单独安装,Docker Compose 已经包含在 Docker Desktop 中。

Linux 用户可以从 Release 页面下载对应平台的二进制文件,重命名为 docker-compose,放到以下任一目录:

  • $HOME/.docker/cli-plugins
  • /usr/local/lib/docker/cli-plugins
  • /usr/lib/docker/cli-plugins

下载后记得给执行权限:chmod +x docker-compose

实际场景

举个例子,一个典型的 Web 项目可能需要这些服务:

  • 应用服务器(Node.js、Python、Go 等)
  • 数据库(MySQL、PostgreSQL、MongoDB)
  • 缓存(Redis、Memcached)
  • 反向代理(Nginx、Traefik)

README区域截图

在没有 Compose 之前,你需要为每个服务单独写 Docker 命令,记住端口映射和网络配置。有了 Compose,这些全部写在一个文件里,团队成员克隆仓库后一条命令就能跑起完整的开发环境。

注意事项

Docker Swarm 曾经依赖旧版 Compose 文件格式,后来没有跟上 Compose Specification 的更新。Swarm 被 Mirantis 收购后不再由 Docker 官方维护,部分 Compose 新特性在 Swarm 环境下无法使用。如果你还在用 Swarm,需要留意兼容性。

贡献

想参与 Docker Compose 的开发,可以查看项目中的 CONTRIBUTING.md 文档。遇到问题可以在 Issue Tracker 提交反馈。

er Compose 的开发,可以查看项目中的 CONTRIBUTING.md 文档。遇到问题可以在 Issue Tracker 提交反馈。

更多推荐