Skip to content


Choose a tag to compare
@shin- shin- released this 18 Dec 23:00

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`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 compatibility matrix

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+


New features

Compose file version 3.5

  • Introduced version 3.5 of the docker-compose.yml specification.
    This version requires 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

Compose file version 2.3

  • 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.

Compose file version 2.1 and up

  • Added support for the oom_kill_disable parameter in service definitions
    (2.x only)

  • Added support for custom names for network definitions (2.x only)

All formats

  • 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 an issue that caused stop_grace_period to be ignored when using
    multiple Compose files

  • Fixed a bug that caused docker-compose images to crash when using
    untagged images

  • 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

  • Fixed a bug where missing secret files would generate an empty directory
    in their place

  • Fixed character encoding issues in the CLI's error handlers

  • 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, @edsrzf and @albers for contributing to this release!

Integrity check

SHA-256 sum Binary name
c8961b6751a0f809d8a22c2bd4a93fc0250dbd032f98b67380370d9288a894c0 docker-compose-Darwin-x86_64
b2f2c3834107f526b1d9cc8d8e0bdd132c6f1495b036a32cbc61b5288d2e2a01 docker-compose-Linux-x86_64
9c110e69aac18364f1fb10c99d26318096ebc4cf4bf5fe7931a38cac61b2eb45 docker-compose-Windows-x86_64.exe