v2.22.0
💁🏻 Upgrade Notes
watch
command is now GA and can be directly used from the root commanddocker compose watch
✨ Features
- Experimental support of
publish
command (#10949) watch
now build and launch the project at start (#10957)- Add
policy
option to the--pull
flag (#10981)
🐛 Fixes
- Fix various race/deadlock conditions for
up
command on exit (#10934) - Fix for multi-plaform issues on build (#10956)
- Enable services explicitly requested even if their
profiles
aren’t activated (#10952) - Fix
config
bug when declaredenv_file
are missing (#11025)
🔧 Internal
- Pass BuildOptions to
up
andrun
commands (#10956) - Upgrade to compose-go@v1.19.0
What’s Changed
- pkg/api: replace uuid for basic random id by @thaJeztah in #10953
- up: fix various race/deadlock conditions on exit by @milas in #10934
- build: pass BuildOptions around explicitly & fix multi-platform issues by @milas in #10956
- Enable service explicitly requested to be restarted by @ndeloof in #10952
- migrate to github.com/distribution/reference by @thaJeztah in #10954
- doc: updated README.md to remove broken link by @kumarlokesh in #10966
- introduce publish (alpha) command by @ndeloof in #10949
- watch: build & launch the project at start by @milas in #10957
- OTEL: adding flags to cli traces by @rvigus in #10974
- cli: fix
--build
flag forcreate
by @milas in #10982 - deps: upgrade Moby to v24.0.6 and gRPC to v1.58.0 by @milas in #10991
- ci: tweak restricted imports in linter by @milas in #10992
- add scale command by @glours in #10979
- update to go1.21.1 by @thaJeztah in #11000
- don’t rely on depends_on to resolve volume_from, better use observed state by @ndeloof in #10999
- introduce pull —policy flag to only pull images not present in cache by @ndeloof in #10981
- build(deps): bump github.com/containerd/containerd from 1.7.3 to 1.7.6 by @dependabot in #11016
- build(deps): bump google.golang.org/grpc from 1.58.0 to 1.58.1 by @dependabot in #11019
- build(deps): bump gotest.tools/v3 from 3.5.0 to 3.5.1 by @dependabot in #11020
- build(deps): bump github.com/moby/buildkit from 0.12.1 to 0.12.2 by @dependabot in #11017
- build(deps): bump github.com/opencontainers/image-spec from 1.1.0-rc4 to 1.1.0-rc5 by @dependabot in #11027
- use official
develop
section to configure watch command by @ndeloof in #11026 - implement publish by @ndeloof in #11008
- TestWatch to use new
develop
section by @ndeloof in #11031 - remove —timeout=0 flag to cleanup function of watch e2e test by @glours in #11023
- move watch from alpha to main command by @glours in #11021
- config —xx don’t need
env_file
being parsed by @ndeloof in #11025
New Contributors
- @kumarlokesh made their first contribution in #10966
- @rvigus made their first contribution in #10974
Full Changelog: v2.21.0…v2.22.0
v2.21.0
💁🏻 Upgrade Notes
- Format of
docker compose ps
anddocker compose ps --format=json
changed to better align withdocker ps
output (#10918)
✨ Features
- Support for multi-document YAML files (compose-spec/compose-go#451)
- Experimental support for loading remote Compose files from Git repos with
include
(#10811)
🐛 Fixes
- Fix for incorrect proxy variables during build (#10908)
- Fix for truncated container logs (#10925)
- Fix for «no such service» errors when using
include
and profiles (compose-spec/compose-go#448) - Fix for
.env
overrides when usinginclude
(compose-spec/compose-go#449)
🔧 Internal
- Upgrade to compose-go@v1.18.3
- Switch to
moby/patternmatcher/ignorefile
for.dockerignore
parsing (#10922)
What’s Changed
- warn user secret uid/gid/mode is not supported by @ndeloof in #10904
- clone variable berfore we capture a pointer by @ndeloof in #10908
- up: handle various attach use cases better by @milas in #10910
- add support for git remote resources by @ndeloof in #10811
- build(deps): bump github.com/compose-spec/compose-go from 1.18.1 to 1.18.2 by @dependabot in #10915
- otel: add
include
to project up span by @milas in #10911 - container logs not sent line by line is broken by @ndeloof in #10925
- replace dockerfile/dockerignore with patternmatcher/ignorefile by @thaJeztah in #10922
- ci: bump golangci-lint to v1.54.2 by @milas in #10916
- watch: only allow a single instance per-project by @milas in #10931
- align
docker compose ps
withdocker ps
by @ndeloof in #10918 - added the dot at the end of the sentence by @ibilalkayy in #10936
- build(deps): upgrade to compose-go v1.18.3 by @milas in #10947
- test: e2e test reliability improvements by @milas in #10950
New Contributors
- @ibilalkayy made their first contribution in #10936
Full Changelog: v2.20.3…v2.21.0
v2.20.3
What’s Changed
Enhancements ✨
- Watch: add tar sync implementation by @milas in #10853
- Improve buildkit node creation by @silvin-lubecki in #10843
- Display builder’s name on the first build line. by @silvin-lubecki in #10881
- Improve shell completion for
--project-directory
by @relrelb in #10879 - Add shell completion for
--profile
by @relrelb in #10878
Fixes 🐛
- Progress: minor correctness fixes by @milas in #10871
- Up: do not warn on successful optional dependency complete by @milas in #10870
- Build: fix missing proxy build args for classic builder by @milas in #10887
Internal 🔧
- Trace: do not block connecting to OTLP endpoint by @milas in #10882
- Test: fix e2e test for privileged builds by @milas in #10873
- Test: temporarily disable an exit-code-from Cucumber test case by @milas in #10875
- Watch: support multiple containers for tar implementation by @milas in #10860
- Watch: batch & de-duplicate file events by @milas in #10865
- Watch: enable tar-based syncer by default by @milas in #10877
- Update Config comment in API Service interface by @prafgup in #10840
- Update README and CI workflows to match main branch by @glours in #10889
Dependencies ⚙️
- Build(deps): bump github.com/docker/cli from 24.0.4+incompatible to 24.0.5+incompatible by @dependabot in #10845
- Build(deps): bump google.golang.org/grpc from 1.56.2 to 1.57.0 by @dependabot in #10847
- Build(deps): bump github.com/containerd/containerd from 1.7.2 to 1.7.3 by @dependabot in #10850
- Build(deps): bump github.com/docker/docker from 24.0.5-0.20230714235725-36e9e796c6fc+incompatible to 24.0.5+incompatible by @dependabot in #10844
- Update to go1.20.7 by @thaJeztah in #10861
- Upgrade Golang to 1.21 by @glours in #10890
- Bump compose-go to version v1.18.0 by @glours in #10891
- Bump compose-go to version v1.18.1 by @glours in #10893
- Build(deps): bump github.com/moby/buildkit from 0.12.1-0.20230717122532-faa0cc7da353 to 0.12.1 by @dependabot in #10867
New Contributors
- @prafgup made their first contribution in #10840
- @relrelb made their first contribution in #10879
Full Changelog: v2.20.2…v2.20.3
v2.20.2
v2.20.1
v2.20.0
What’s Changed
Enhancements ✨
- Add
docker compose wait
by @ulyssessouza in #10742 - Add support of —builder and BUILDX_BUILDER by @glours in #10745
- Support
attach
by @ndeloof in #10700 - Add support for
include
in compose-spec/compose-go#416
Fixes 🐛
- Don’t use unitialized cli to setup DryRunClient by @ndeloof in #10770
- Network: fix random missing network when service has more than one by @milas in #10778
- Fix(secrets): file permission value does not comply with spec by @shantanoo-desai in #10784
- Apply no-deps before we select and mutate target service by @ndeloof in #10789
Internal 🔧
- Fix some comments by @cuishuang in #10768
- When —index is not set select first service container by @ndeloof in #10763
- Test: fix process leak in wait e2e test by @milas in #10790
- CI: speed up a couple Dockerfile targets w/ cache mount by @milas in #10793
Bumps
- Build(deps): bump google.golang.org/grpc from 1.56.0 to 1.56.2 by @dependabot in #10787
- Deps: bump docker/cli-docs-tool to v0.6.0 by @milas in #10781
- Build(deps): bump gotest.tools/v3 from 3.4.0 to 3.5.0 by @dependabot in #10760
- Build(deps): bump github.com/opencontainers/image-spec from 1.1.0-rc3 to 1.1.0-rc4 by @dependabot in #10764
- Build(deps): bump github.com/docker/docker from 24.0.2+incompatible to 24.0.4+incompatible by @dependabot in #10788
- Build(deps): bump github.com/docker/buildx from 0.11.0 to 0.11.1 by @dependabot in #10776
New Contributors
- @cuishuang made their first contribution in #10768
- @shantanoo-desai made their first contribution in #10784
Full Changelog: v2.19.1…v2.20.0
v2.19.1
Known Issues 😓
- DNS resolution issues in services using multiple networks (#10777)
Bugfixes 🐛
- Fix for «container not connected to network» errors when running
compose up
(#10756) - Default to project directory if
build.context
is not specified (see compose-spec/compose-spec#376) - Warn if using a bind mount in
watch
configuration (#10741)
Changelog
- add warning when a watch source is already used by a bind mount volume by @glours in #10741
- fix typos by @gocurr in #10740
- Fix capitalization error in sentence by adding an uppercase letter at… by @aroramrinaal in #10722
- up: fix race condition on network connect by @milas in #10756
- ci: upgrade compose-go to v1.15.1 by @milas in #10757
New Contributors
- @gocurr made their first contribution in #10740
- @aroramrinaal made their first contribution in #10722
Full Changelog: v2.19.0…v2.19.1
v2.19.0
Known Issues 😓
- Intermittent «container is not connected to the network » errors on
docker compose up
(#10668)
What’s Changed
Enhancements ✨
- introduce ability to select service to be stopped by
compose down
by @ndeloof in #10552 - use
--progress
to configure progress UI style by @ndeloof in #10690 - introduce run —cap-add to run maintenance commands using service image by @ndeloof in #10669
Fixes 🐛
- fix detection of swarm mode by @ndeloof in #10591
- fix support for project name set by COMPOSE_PROJECT_NAME env var by @ndeloof in #10597
- fix display of volumes flag in down command help by @glours in #10616
- progress: remove errant import by @milas in #10614
- [fix]
up
should not silently ignore missing depends_on service by @ndeloof in #10602 - forward signal to container by @ndeloof in #10633
- detect network conflict as name is not guaranteed to be unique by @ndeloof in #10612
- Fix typo in warning about existing volume by @jfly in #10623
- fix
compose -p x logs -f
detect new services started after command by @ndeloof in #10622 - don’t skip
compose
used as project name by @ndeloof in #10657 - create directory in container using
mkdir -p
by @ndeloof in #10652 - Do not set a default timeout of 10 seconds when restarting / stopping… by @robbert-ef in #10672
- don’t apply «rebuild» watch strategy by default by @ndeloof in #10710
- fix race condition, waiting for containers when one exit by @ndeloof in #10725
- warn user build.secrets uid,gid,mode are not implemented by @ndeloof in #10709
Internal 🔧
- only set CopyUIDGID when secret is requested to set gid/uid by @ndeloof in #10598
- only watch configured paths by @ndeloof in #10599
- sort containers by creation date to scale down the older ones by @ndeloof in #10571
- compute service hash with a default DeployConfig by @ndeloof in #10621
- Cuke tests for port conflicts by @nicksieger in #10627
- add Windows drive prefix to temp dir usage in the doc generation task by @glours in #10637
- update docs to reflect dry run mode is feature complete by @aevesdocker in #10604
- better diagnostic message on network label mismatch by @ndeloof in #10639
- assume we receive logs by lines and don’t ignore those without EOL by @ndeloof in #10660
- ci: upgrade to Go 1.20.5 and Moby v24.x by @milas in #10662
- do not render
Building
when no build is needed by @ndeloof in #10620 - ci: merge Go coverage reports before upload by @milas in #10666
- trace: add OTEL initialization by @milas in #10526
- add GitHub action to trigger Docker Desktop e2e tests with Compose edge version by @glours in #10625
- use env instead of variables prefix to use DOCKERDESKTOP_APPID by @glours in #10685
- ci: add more ignore rules to dependabot by @milas in #10694
- escape containerimage.digest attribute in merge.yml GHA worlflow by @glours in #10691
- fix typo in merge workflow for DOCKERDESKTOP_APP_ID by @glours in #10698
- use directly DOCKERDESKTOP_APP_ID without env. prefix by @glours in #10701
- add vars. prefix to DOCKERDESKTOP_APP_ID by @glours in #10702
- specify origin repo in generation token step of docker desktop edge testing by @glours in #10703
- otel: fix initialization / error-handling by @milas in #10717
- add missing comma in desktop-edge-test job by @glours in #10724
- use main branch of Docker Desktop repo to trigger remote workflow by @glours in #10726
- trace: refactor root command span reporting by @milas in #10719
- ci: upgrade to buildx v0.11 by @milas in #10727
Bumps
- build(deps): bump github.com/sirupsen/logrus from 1.9.0 to 1.9.2 by @dependabot in #10578
- go.mod: golang.org/x/oauth2 v0.1.0 by @thaJeztah in #10592
- build(deps): bump github.com/cloudflare/cfssl from 1.4.1 to 1.6.4 by @dependabot in #10572
- build(deps): bump github.com/stretchr/testify from 1.8.2 to 1.8.3 by @dependabot in #10582
- build(deps): bump github.com/stretchr/testify from 1.8.3 to 1.8.4 by @dependabot in #10632
- bump buildx and use confutil.ConfigDir by @ndeloof in #10631
- ci: bump golangci-lint to v1.53.x by @milas in #10659
- build(deps): bump github.com/sirupsen/logrus from 1.9.2 to 1.9.3 by @dependabot in #10653
- build(deps): bump github.com/Microsoft/go-winio from 0.5.2 to 0.6.1 by @dependabot in #10677
- build(deps): bump golang.org/x/sync from 0.2.0 to 0.3.0 by @dependabot in #10715
- build(deps): bump github.com/AlecAivazis/survey/v2 from 2.3.6 to 2.3.7 by @dependabot in #10699
- bump compose-go to version v1.15.0 by @glours in #10730
- build(deps): bump google.golang.org/grpc from 1.53.0 to 1.56.0 by @dependabot in #10720
New Contributors
- @aevesdocker made their first contribution in #10604
- @jfly made their first contribution in #10623
- @robbert-ef made their first contribution in #10672
Full Changelog: v2.18.1…v2.19.0
v2.18.1
🐛 Fixes
- Fix for «Image not found» errors when running
up --build
(#10574)
What’s Changed
- only check the platform of cached image if image found by @glours in #10575
Full Changelog: v2.18.0…v2.18.1
v2.18.0
What’s Changed
✨ Enhancements
- Dry run build command support by @glours in #10502
- First implementation of
viz
subcommand by @BenjaminGuzman in #10376 - introduce —no-path-resolution to skip relative path to be resolved by @ndeloof in #10557
- introduce
COMPOSE_ANSI
to define —ansi default value by @ndeloof in #10559 - introduce ability to write status messages on stdout by @ndeloof in #10549
🐛 Fixes
- don’t block events loop collecting logs by @ndeloof in #10493
- restore support for
--memory
by @ndeloof in #10492 - TailMsgf must format with args by @ndeloof in #10478
- make progress title configurable by @glours in #10507
- stop containers after termination by @TP-O in #10479
- let user declare build secret target by @ndeloof in #10527
- fix buildkit progressui integration by @ndeloof in #10535
- Update 🥒 tests to use
dockerfile_inline
by @laurazard in #10508 - fix container being recreated while config has not changed by @ndeloof in #10540
- fix race condition when —parallel is used with a large number of dependent services by @ndeloof in #10544
- check local image matches the required platform by @ndeloof in #10546
- restore long description to be included in
docker compose help
by @ndeloof in #10504 - fix local image removal when
compose down
is ran with--project-name
by @ndeloof in #10558 - detect active endpoint trying to remove network and skip with a warning by @ndeloof in #10555
- fix: remove unnecessary [] output by @ezradiniz in #10554
- detect terminal is not a
console.File
to avoid a panic by @ndeloof in #10564 - [fix] —parallel has precedence over COMPOSE_PARALLEL_LIMIT by @ndeloof in #10566
- report external network not found when swarm is disabled by @ndeloof in #10565
🔧 Internal
- update go to go1.20.4 by @thaJeztah in #10525
- build(deps): bump github.com/moby/buildkit from 0.11.5 to 0.11.6 by @dependabot in #10489
- build(deps): bump github.com/docker/docker from 23.0.4+incompatible to 23.0.5+incompatible by @dependabot in #10500
- build(deps): bump github.com/docker/cli from 23.0.4+incompatible to 23.0.5+incompatible by @dependabot in #10501
- build(deps): bump github.com/moby/buildkit from 0.11.5 to 0.11.6 by @dependabot in #10516
- build(deps): bump go.opentelemetry.io/otel from 1.14.0 to 1.15.0 by @dependabot in #10515
- build(deps): bump github.com/opencontainers/image-spec from 1.1.0-rc2.0.20221005185240-3a7f492d3f1b to 1.1.0-rc.3 by @dependabot in #10518
- build(deps): bump golang.org/x/sync from 0.1.0 to 0.2.0 by @dependabot in #10534
- build(deps): bump github.com/docker/cli from 23.0.5+incompatible to 23.0.6+incompatible by @dependabot in #10542
- build(deps): bump go.opentelemetry.io/otel from 1.15.0 to 1.15.1 by @dependabot in #10521
- build(deps): bump github.com/moby/term from 0.0.0-20221205130635-1aeaba878587 to 0.5.0 by @dependabot in #10523
New Contributors
- @BenjaminGuzman made their first contribution in #10376
- @ezradiniz made their first contribution in #10554
Full Changelog: v2.17.3…v2.18.0
Docker Compose is an open source tool for defining and running multi-container applications with Docker. Compose lets you use a YAML file to configure your application’s services, and then create and start all the services from your configuration with just a single command. Compose works great in all environments: production, staging, testing, development, and on CI workflows. Compose has commands for every stage of your application lifecycle, from starting, stopping and rebuilding services, through to status viewing, streaming of log output and running a one-off command on a service.
Features
- Multiple isolated environments on one host
- Preserves volume data when containers are created
- Only recreates containers that have changed
- Variables and moving a composition between environments
Project Samples
License
Apache License V2.0
Engagedly is a fast-paced growth provider and an award-winning performance management solution provider. Built upon best practices and decades of research, Engagedly’s People + Strategy platform is evolving performance management to drive successful organizational outcomes across the globe. Engagedly’s E3 unified platform combines the power of business strategy execution, talent enablement, and employee engagement into one easy-to-use software solution. Today, Engagedly serves more than 300+ customers worldwide, empowering high performance organizations through people + strategy alignment.
User Reviews
Docker Compose is available on multiple platforms.In this lab we’ll demonstrate some of the ways to install it on Linux, Windows and Mac.
Installing Docker Compose on Linux
Installing Docker Compose on Linux is a two-step process. Firt you will be downloading binary from github, Second giving executable permission.
Download the current stable release of Docker Compose
$ curl -L https://github.com/docker/compose/releases/download/1.24.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
$ chmod +x /usr/local/bin/docker-compose
Test the installation
You can run this command from a terminal window
$ docker-compose --version
Installing Docker Compose on Windows 10
If you have already installed Docker Desktop for Windows or Docker Toolbox then no need of separate installation for docker compose, since its part of the package.
Check Docker Compose is installed
You can run this command from a PowerShell or CMD terminal.
Installing Docker Compose on Mac
Docker Compose is installed as part of Docker for Mac. So if you have Docker for MAC, you have Docker Compose.
Check Docker Compose is installed
You can run this command from a terminal window.
$ docker-compose --version
Contributor
Savio Mathew
This page contains information on how to install Docker Compose. You can run Compose on macOS, Windows, and 64-bit Linux.
Prerequisites
Docker Compose relies on Docker Engine for any meaningful work, so make sure you have Docker Engine installed either locally or remote, depending on your setup.
-
On desktop systems like Docker Desktop for Mac and Windows, Docker Compose is included as part of those desktop installs.
-
On Linux systems, you can install Docker Compose with the Docker Engine using the convenience script. Select the install Docker Engine page for your distribution and then look for instructions on installing using the convenience script.
Otherwise, you should first install the Docker Engine for your OS and then refer to this page for instructions on installing Compose on Linux systems. -
To run Compose as a non-root user, see Manage Docker as a non-root user.
Install Compose
Follow the instructions below to install Compose on Mac, Windows, Windows Server, or Linux systems.
Install a different version
The instructions below outline installation of the current stable release (v2.5.0) of Compose. To install a different version of Compose, replace the given release number with the one that you want.
Compose releases are also listed and available for direct download on the Compose repository release page on GitHub.
To install the Python version of Compose, follow instructions in the Compose v1 GitHub branch.
- Mac
- Windows
- Windows Server
- Linux
- Linux Standalone binary
Install Compose on macOS
Docker Desktop for Mac includes Compose along with other Docker apps, so Mac users do not need to install Compose separately. For installation instructions, see Install Docker Desktop on Mac.
Install Compose on Windows desktop systems
Docker Desktop for Windows includes Compose along with other Docker apps, so most Windows users do not need to install Compose separately. For install instructions, see Install Docker Desktop on Windows.
If you are running the Docker daemon and client directly on Microsoft Windows Server, follow the instructions in the Windows Server tab.
Install Compose on Windows Server
Follow these instructions if you are running the Docker daemon and client directly on Microsoft Windows Server and want to install Docker Compose.
-
Start an “elevated” PowerShell (run it as administrator). Search for PowerShell, right-click, and choose Run as administrator. When asked if you want to allow this app to make changes to your device, click Yes.
-
In PowerShell, since GitHub now requires TLS1.2, run the following:
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
Then run the following command to download the current stable release of Compose (v2.5.0):
Invoke-WebRequest "https://github.com/docker/compose/releases/download/v2.5.0/docker-compose-Windows-x86_64.exe" -UseBasicParsing -OutFile $Env:ProgramFiles\Docker\docker-compose.exe
Note
On Windows Server 2019, you can add the Compose executable to
$Env:ProgramFiles\Docker
. Because this directory is registered in the systemPATH
, you can run thedocker-compose --version
command on the subsequent step with no additional configuration.To install a different version of Compose, substitute
v2.5.0
with the version of Compose you want to use. -
Test the installation.
$ docker compose version Docker Compose version v2.5.0
Install Compose on Linux systems
You can install Docker Compose in different ways, depending on your needs:
- In testing and development environments, some users choose to use automated convenience scripts to install Docker.
- Most users set up Docker’s repositories and install from them, for ease of installation and upgrade tasks. This is the recommended approach.
- Some users download and install the binary, and manage upgrades manually.
Install using the convenience script
As Docker Compose is now part of the Docker CLI it can be installed via a convenience script with Docker Engine and the CLI.
Choose your Linux distribution and follow the instructions.
Install using the repository
If you already follow the instructions to install Docker Engine, Docker Compose should already be installed.
Otherwise, you can set up the Docker repository as mentioned in the Docker Engine installation, choose your Linux distribution and go to the Set up the repository
section.
When finished
-
Update the
apt
package index, and install the latest version of Docker Compose, or go to the next step to install a specific version:$ sudo apt-get update $ sudo apt-get install docker-compose-plugin
-
To install a specific version of Docker Engine, list the available versions in the repo, then select and install:
a. List the versions available in your repo:
$ apt-cache madison docker-compose-plugin docker-compose-plugin | 2.3.3~ubuntu-focal | https://download.docker.com/linux/ubuntu focal/stable arm64 Packages
b. Install a specific version using the version string from the second column, for example,
2.3.3~ubuntu-focal
.$ sudo apt-get install docker-compose-plugin=<VERSION_STRING>
-
Verify that Docker Compose is installed correctly by checking the version.
$ docker compose version Docker Compose version v2.3.3
Install the binary manually
On Linux, you can download the Docker Compose binary from the Compose repository release page on GitHub and copying it into $HOME/.docker/cli-plugins
as docker-compose
. Follow the instructions from the link, which involve running the curl
command in your terminal to download the binaries. These step-by-step instructions are also included below.
-
Run this command to download the current stable release of Docker Compose:
$ DOCKER_CONFIG=${DOCKER_CONFIG:-$HOME/.docker} $ mkdir -p $DOCKER_CONFIG/cli-plugins $ curl -SL https://github.com/docker/compose/releases/download/v2.5.0/docker-compose-linux-x86_64 -o $DOCKER_CONFIG/cli-plugins/docker-compose
This command installs Compose for the active user under
$HOME
directory. To install Docker Compose for all users on your system, replace~/.docker/cli-plugins
with/usr/local/lib/docker/cli-plugins
.To install a different version of Compose, substitute
v2.5.0
with the version of Compose you want to use. -
Apply executable permissions to the binary:
$ chmod +x $DOCKER_CONFIG/cli-plugins/docker-compose
or if you choose to install Compose for all users
$ sudo chmod +x /usr/local/lib/docker/cli-plugins/docker-compose
-
Test the installation.
$ docker compose version Docker Compose version v2.5.0
Install Compose as standalone binary on Linux systems
You can use Compose as a standalone binary without installing the Docker CLI.
- Run this command to download the current stable release of Docker Compose:
$ curl -SL https://github.com/docker/compose/releases/download/v2.5.0/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose
To install a different version of Compose, substitute
v2.5.0
with the version of Compose you want to use.
- Apply executable permissions to the binary:
$ sudo chmod +x /usr/local/bin/docker-compose
Note:
If the command
docker-compose
fails after installation, check your path. You can also create a symbolic link to/usr/bin
or any other directory in your path.For example:
$ sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
-
Test the installation.
$ docker-compose --version Docker Compose version v2.5.0
Uninstallation
To uninstall Docker Compose if you installed using curl
:
$ rm $DOCKER_CONFIG/cli-plugins/docker-compose
or if you choose to install Compose for all users
$ sudo rm /usr/local/lib/docker/cli-plugins/docker-compose
Got a “Permission denied” error?
If you get a “Permission denied” error using either of the above methods, you probably do not have the proper permissions to remove
docker-compose
. To force the removal, prependsudo
to either of the above commands and run again.
Where to go next
- User guide
- Getting Started
- Command line reference
- Compose file reference
- Sample apps with Compose
compose, orchestration, install, installation, docker, documentation
© 2019 Docker, Inc.
Licensed under the Apache License, Version 2.0.
Docker and the Docker logo are trademarks or registered trademarks of Docker, Inc. in the United States and/or other countries.
Docker, Inc. and other parties may also have trademark rights in other terms used herein.
https://docs.docker.com/compose/install/
Project description
Docker Compose is a tool for running multi-container applications on Docker
defined using the Compose file format.
A Compose file is used to define how the one or more containers that make up
your application are configured.
Once you have a Compose file, you can create and start your application with a
single command: docker-compose up
.
Compose files can be used to deploy applications locally, or to the cloud on
Amazon ECS or
Microsoft ACI using
the Docker CLI. You can read more about how to do this:
- Compose for Amazon ECS
- Compose for Microsoft ACI
Where to get Docker Compose
Windows and macOS
Docker Compose is included in
Docker Desktop
for Windows and macOS.
Linux
You can download Docker Compose binaries from the
release page on this repository.
Using pip
If your platform is not supported, you can download Docker Compose using pip
:
pip install docker-compose
Note: Docker Compose requires Python 3.6 or later.
Quick Start
Using Docker Compose is basically a three-step process:
- Define your app’s environment with a
Dockerfile
so it can be
reproduced anywhere. - Define the services that make up your app in
docker-compose.yml
so
they can be run together in an isolated environment. - Lastly, run
docker-compose up
and Compose will start and run your entire
app.
A Compose file looks like this:
services: web: build: . ports: - "5000:5000" volumes: - .:/code redis: image: redis
You can find examples of Compose applications in our
Awesome Compose repository.
For more information about the Compose format, see the
Compose file reference.
Contributing
Want to help develop Docker Compose? Check out our
contributing documentation.
If you find an issue, please report it on the
issue tracker.
Releasing
Releases are built by maintainers, following an outline of the release process.
Download files
Download the file for your platform. If you’re not sure which to choose, learn more about installing packages.