@dnephin dnephin released this Nov 3, 2015 · 3005 commits to master since this release

Assets 6

This release contains breaking changes.

Note that Compose 1.5.0 requires Docker 1.7.1 or later.

If you're a Mac or Windows user, the Docker Toolbox will install Compose 1.5.0 for you, alongside the latest versions of the Docker Engine, Machine and Kitematic.

Otherwise, you can use the usual commands to install/upgrade. Either download the binary:

curl -L https://github.com/docker/compose/releases/download/1.5.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose

Or pip install -U docker-compose==1.5.0 if you prefer pip.

Here's what's new:

Breaking changes:

With the introduction of variable substitution support in the Compose file, any Compose file that uses an environment variable ($VAR or ${VAR}) in the command: or entrypoint: field will break.

Previously these values were interpolated inside the container, with a value from the container environment. In Compose 1.5.0, the values will be interpolated on the host, with a value from the host environment.

To migrate a Compose file to 1.5.0, escape the variables with an extra $ (ex: $$VAR or $${VAR}). See
https://github.com/docker/compose/blob/8cc8e61/docs/compose-file.md#variable-substitution

Major features:

New features:

  • You can now optionally pass a mode to volumes_from, e.g. volumes_from: ["servicename:ro"].
  • Since Docker now lets you create volumes with names, you can refer to those volumes by name in docker-compose.yml. For example, volumes: ["mydatavolume:/data"] will mount the volume named mydatavolume at the path /data inside the container.

If the first component of an entry in volumes starts with a ., / or ~, it is treated as a path and expansion of relative paths is performed as necessary. Otherwise, it is treated as a volume name and passed straight through to Docker.

Read more on named volumes and volume drivers here:
https://github.com/docker/docker/blob/244d9c33/docs/userguide/dockervolumes.md

  • docker-compose build --pull instructs Compose to pull the base image for each Dockerfile before building.
  • docker-compose pull --ignore-pull-failures instructs Compose to continue if it fails to pull a single service's image, rather than aborting.
  • You can now specify an IPC namespace in docker-compose.yml with the ipc option.
  • Containers created by docker-compose run can now be named with the --name flag.
  • If you install Compose with pip or use it as a library, it now works with Python 3.
  • image now supports image digests (in addition to ids and tags), e.g.
    image: "busybox@sha256:38a203e1986cf79639cfb9b2e1d6e773de84002feea2d4eb006b52004ee8502d"
  • ports now supports ranges of ports, e.g.
ports:
  - "3000-3005"
  - "9000-9001:8000-8001"
  • docker-compose run now supports a -p|--publish parameter, much like docker run -p, for publishing specific ports to the host.
  • docker-compose pause and docker-compose unpause have been implemented, analogous to docker pause and docker unpause.
  • When using extends to copy configuration from another service in the same Compose file, you can omit the file option.
  • Compose can be installed and run as a Docker image. This is an experimental feature.

Bug fixes:

  • All values for the log_driver option which are supported by the Docker daemon are now supported by Compose.
  • docker-compose build can now be run successfully against a Swarm cluster.

Thanks @mnowster, @aanand, @moxiegirl, @albers, @mrfuxi, @viranch, @sdurrheimer, @charleswhchan, @ZJaffee, @villlem, @vdemeester, @TomasTomecek, @timbutler, @ticosax, @SvenDowideit, @stedur, @ronen, @md2perpe, @ggtools, @geron, @cweagans and @au-phiware!