If you're a Mac or Windows user, the best way to install Compose and keep it up-to-date is Docker for Mac and Windows.
Docker for Mac and Windows will automatically install the latest version of Docker Engine for you.
Alternatively, you can use the usual commands to install or upgrade Compose:
curl -L https://github.com/docker/compose/releases/download/1.18.0-rc1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
See the install docs for more install options and instructions.
| Compose file format | Docker Engine |
|---|---|
| 3.3 – 3.5 | 17.06.0+ |
| 3.0 – 3.2 | 1.13.0+ |
| 2.3 | 17.06.0+ |
| 2.2 | 1.13.0+ |
| 2.1 | 1.12.0+ |
| 2.0 | 1.10.0+ |
| 1.0 | 1.9.1+ |
Introduced version 3.5 of the docker-compose.yml specification.
This version requires to be used with Docker Engine 17.06.0 or above
Added support for the shm_size parameter in build configurations
Added support for the isolation parameter in service definitions
Added support for custom names for network, secret and config definitions
Added support for extra_hosts in build configuration
Added support for the long syntax for volume entries, as previously introduced in the 3.2 format. Note that using this syntax will create mounts instead of volumes.
Added support for the oom_kill_disable parameter in service definitions
(2.x only)
Added support for custom names for network, secret and config definitions (2.x only)
Values interpolated from the environment will now be converted to the proper type when used in non-string fields.
Added support for --label in docker-compose run
Added support for --timeout in docker-compose down
Added support for --memory in docker-compose build
Setting stop_grace_period in service definitions now also sets the
container's stop_timeout
Fixed an issue where Compose was still handling service hostname according to legacy engine behavior, causing hostnames containing dots to be cut up
Fixed a bug where the X-Y:Z syntax for ports was considered invalid
by Compose
Fixed an issue with CLI logging causing duplicate messages and inelegant output to occur
Fixed a bug where the valid ${VAR:-} syntax would cause Compose to
error out
Fixed a bug where env_file entries using an UTF-8 BOM were being read
incorrectly
Fixed a bug where missing secret files would generate an empty directory in their place
Added validation for the test field in healthchecks
Added validation for the subnet field in IPAM configurations
Added validation for volumes properties when using the long syntax in
service definitions
The CLI now explicit prevents using -d and --timeout together
in docker-compose up
Thanks to @garribas, @DrewRomanyk, @summergirl21, @AlexeyRokhin, @smiller123, @andyneff, @reutsharabani, @NikitaVlaznev, @mtsmfm, @jbarciauskas and @edsrzf for contributing to this release!
| SHA-256 sum | Binary name |
|---|---|
e942bb42e6afa98b8045d4e43c7dfeb5c9b5a044070c9c43811a994f1a4a253c | docker-compose-Darwin-x86_64 |
08e11bae2565bf7f52c2f84a984683f64b60349e9a7e3b396dfe21acd38efc2e | docker-compose-Linux-x86_64 |
5144111a922e0586fa7bd83fe8df84156d41ecad15599b7045f4371f1b338743 | docker-compose-Windows-x86_64.exe |
Fetched March 31, 2026