docker/compose

DevOps & Self-hosting

Defines a multi-container Docker app in one YAML file and starts it with a single command.

38,532
5,891
Go
Apache-2.0
12 years old

Docker Compose is a tool for describing a multi-container Docker application in a Compose file and starting the whole set of services together. It suits developers and small teams who already use Docker and want a repeatable local or test environment without writing container-run commands for each service.

What it changes in the workflow

Instead of building images and starting each container by hand, you describe services in compose.yaml — build context, ports, volumes, images — and run docker compose up. The README's quick start is a three-step loop: write a Dockerfile for the app environment, list the services in a Compose file, then start everything as one isolated environment. In the example, a web service is built from the current directory and exposed on port 5000, while a redis service comes from the public image README quick start.

The result is a single declarative artifact that ties service configuration together, so starting, stopping and sharing the same stack no longer depends on remembering per-container flags.

Where it runs and how it is installed

On Windows and macOS, Compose ships inside Docker Desktop, so installing Docker Desktop is the usual path where to get Docker Compose, Docker Desktop. On Linux, you download the binary from the repository's release page, rename it to docker-compose, make it executable and place it in a Docker CLI plugins directory — either the user-level $HOME/.docker/cli-plugins or one of the documented system-wide plugin folders Linux install notes, releases.

Boundaries worth knowing

  • Docker itself is the prerequisite. Compose orchestrates containers on Docker; it is not a standalone runtime.
  • Swarm is a separate story. The README notes that Docker Swarm never adopted the Compose specification, so some newer Compose syntax and features are not available to Swarm users, and Swarm is no longer maintained by Docker Inc. after its acquisition by Mirantis README note on Swarm, Mirantis.
  • The old Python implementation is legacy. It lives on the v1 branch, while current development is the Go codebase legacy section.
  • Older discussion, not current behavior. A 2019 thread was about Compose reading .env without an opt-out HN thread; treat that as historical context rather than a description of today's documentation.

Practical fit

Compose is a reasonable choice when a project already runs on Docker and needs a reproducible way to bring up several related services — an application plus a database or cache, for example — on one machine. It does not by itself cover production orchestration across many hosts; that role historically belonged to Swarm, which the README flags as outside current Docker Inc. maintenance.

The project is Apache-2.0 licensed, and the README points contributors to a separate contributing guide and the issue tracker contributing.

Written by AI from the project's README, updated October 29, 2026. The project's own docs are the source of truth.

Hacker News

Docker Compose reads your “.env” without opt-out
▲ 160 · 77 comments · October 17, 2019
Compose Spec Updated with <models> for AI Workloads
▲ 16 · 10 comments · July 2, 2025
Docker Compose (aka fig) Released
▲ 15 · 1 comment · February 25, 2015