docker/compose
DevOps & Self-hostingDefines a multi-container Docker app in one YAML file and starts it with a single command.
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
v1branch, while current development is the Go codebase legacy section. - Older discussion, not current behavior. A 2019 thread was about Compose reading
.envwithout 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.