Docker Compose is an open-source command-line tool for defining and running multi-container applications from a single YAML file, covering services, networks, and volumes with one command to bring everything up. It works across development, testing, staging, CI, and production, and installs as part of Docker Desktop or as a standalone binary on Linux, which makes it a fit for application developers and platform engineers who need reproducible local or pipeline environments rather than a full orchestration platform. The README notes that Docker Swarm once shared its file format but is no longer maintained by Docker Inc, positioning Compose as the actively developed path forward for that syntax. First committed in 2013, the project remains active, with 705 contributors, 475 commits in the past year, and a release only 18 days ago.
Defines and runs multi-container Docker applications using a Compose file with a single command.
How do I bring up every service, network, and volume my application needs without starting each container by hand?
reads the Compose file and creates and starts the whole stack with one command, wiring the declared networks and volumes as it goes
Is the set of containers I have running actually what my configuration says it should be?
reconciles observed state against the expected state in the file and computes a plan to converge the two, rather than blindly restarting everything
What is actually different between my Compose file's network setup and what's deployed?
can output just the resolved network section of a project's configuration, stripping away services and volumes so the topology is easy to check
What happened to my containers during a specific window before things broke?
filters the stream of container events to a time range, so a post-incident review can look only at what happened during the deployment in question
Which persistent volumes belong to this application and are still around?
lists every volume tied to the current project so storage left behind by a stack can be found and audited
Will my pipeline's build step behave the same after upgrading, given it relied on the old build path?
shows that image building is now delegated entirely to an external builder, so a workflow built around the old internal builder needs to be checked against the new behavior
99 capabilities
· 2 backed by code, an API document or a real run
Built from Docker Compose's releases, docs, README and our own runs.
“Seen” marks the month we first spotted a release the vendor didn't date.
Group names and tags are our labels.
Docker Compose covers 1 of the 8 vulnerability assessment methods capabilities we track.
What Docker Compose offers you
Command-line interface33
Plugin API support4
CI/CD pipeline integration2
Client SDKs1
JSON data export1
Plugin system1
Show
No capabilities match.
+All capabilities99 capabilities▸
+Build configuration optionsshippedSupports advanced build configurations including cache_from, network, and target parameters in Compose file formats 2.2 through 3.4.15 releases · 3 other sources · first seen Feb 2017▸
release
15 total
Adds build.no_cache_filter support in Compose files to selectively skip cache for specific build stages.
v5.0.0 · Dec 2025
· source
· release history
Add support for the build.entitlements field in docker-compose.yml to specify build entitlements.
v2.27.0 · Apr 2024
· source
· release history
additional_contexts key in build service config supports extra Dockerfile build contexts
v2.17.0 · Mar 2023
· source
· release history
Support for the privileged attribute within the service.build section of compose files
v2.15.0 · Jan 2023
· source
· release history
Adds the tags property to the build section in docker-compose files to specify custom image tags
v2.6.0 · May 2022
· source
· release history
Respects ~/.ssh/config when building images via compose up
v2.4.1 · Apr 2022
· source
· release history
example
Skip the cache for a specific build stage (e.g., a frequently-changing deps stage) without disabling cache for the entire build.$ # compose.yaml snippet services: app: build: context: . no_cache_filter: - deps
v5.0.0 · Dec 2025
· source
Enable BuildKit for all Compose build operations by setting the required environment variables.$ export DOCKER_BUILDKIT=1 COMPOSE_DOCKER_CLI_BUILD=1 && docker-compose build
1.25.0 · Nov 2019
· source
Configure a service build with new v3.4 options like cache_from, target, and network.$ services: web: build: context: . cache_from: - myapp:latest target: prod network: backend
1.17.0 · Nov 2017
· source
+Watch for source-driven updatesshippedMonitors source files and automatically triggers service updates or rebuilds upon changes.11 releases · 6 other sources · first seen Feb 2023▸
Also counts toward: Command-line interface
release
11 total
Supports the develop.watch.initial_sync attribute in Compose files, giving control over initial file synchronisation behaviour when using docker compose watch.
v2.39.4 · Sep 2025
· source
· release history
Adds include field to watch configuration to filter which files trigger sync/rebuild, reducing noise from unrelated changes.
v2.34.0 · Mar 2025
· source
· release history
Introduces a restart watch action that restarts a container when watched files change, without rebuilding the image.
v2.32.0 · Dec 2024
· source
· release history
Introduces a sync+exec watch action that syncs files into a running container then executes a command, enabling hot-reload workflows without a full restart.
v2.32.0 · Dec 2024
· source
· release history
Supports combining bind mounts with rebuild watch actions in docker compose watch, enabling more flexible live-reload configurations.
v2.29.3 · Sep 2024
· source
· release history
Adds x-initSync extension to the watch configuration, ensuring an initial file sync is always performed when watch mode starts.
v2.29.2 · Aug 2024
· source
· release history
example
Suppress the initial bulk sync when starting a watch session, so only live file changes are propagated — useful when the container already has the correct files baked in.$ develop: watch: - path: ./src action: sync target: /app/src initial_sync: false
v2.39.4 · Sep 2025
· source
Limit watch to only rebuild when source files under src/ change, ignoring docs, tests, or other directories.$ # In docker-compose.yml services: app: develop: watch: - path: . action: rebuild include: - src/
v2.34.0 · Mar 2025
· source
Trigger a container restart on file changes without rebuilding the image — useful for interpreted-language services.$ # docker-compose.yml services: app: image: myapp develop: watch: - path: ./src action: restart
v2.32.0 · Dec 2024
· source
Force an initial sync of watched files when starting docker compose watch, so containers always start with up-to-date content even before the first file change.$ services: app: build: . develop: watch: - action: sync path: ./src target: /app/src x-initSync: true
v2.29.2 · Aug 2024
· source
Develop applications by letting Docker detect file changes and restart services automatically.$ docker compose up --watch
v2.25.0 · Mar 2024
· source
Run a service in development mode that automatically restarts whenever source code or config files are modified.$ docker compose up --watch
v2.24.7 · Mar 2024
· source
+Advanced service resource configurationshippedSupports configuring CPU shares, memory swap limits, PIDs, IPC namespaces, and ulimits for services.14 releases · 3 other sources · first seen Feb 2015▸
release
14 total
deploy.limits.cpus and deploy.limits.pids are respected when scheduling services
v2.6.1 · Jun 2022
· source
· release history
Adds support for Nvidia GPUs via device requests in service configurations
1.28.0 · Jan 2021
· source
· release history
Compose file format 2.1+ adds support for the cpu_period parameter in service definitions to restrict CPU usage intervals.
1.21.0 · Apr 2018
· source
· release history
Compose file format 2.2+ adds support for the cpu_rt_period and cpu_rt_runtime parameters in service definitions for real-time CPU scheduling.
1.21.0 · Apr 2018
· source
· release history
Adds blkio_config parameter support in service definitions for Compose file formats 2.x
1.16.0 · Aug 2017
· source
· release history
Supports pid: service:<name> syntax in service definitions (v2.1+ files)
1.15.0 · Jul 2017
· source
· release history
example
Build an image with a specific memory limit using the new CLI flag.$ docker-compose build --memory=512m
1.18.0 · Dec 2017
· source
Define a build step with shared memory size and OS isolation in compose.yml.$ build: shm_size: '1gb' isolation: process
1.18.0 · Dec 2017
· source
Run a service interactively with custom labels for tracking or identification.$ docker-compose run --label version=1.0 --label env=test app
1.18.0 · Dec 2017
· source
+Named volume managementshippedAllows defining and mounting named host volumes in Compose files rather than only path-based binds.14 releases · 2 other sources · first seen Nov 2015▸
release
14 total
Introduces volume.type=image to mount image contents as a volume.
v2.35.0 · Apr 2025
· source
· release history
Docker Compose v2.8.0 now recreates networks, volumes, secrets, and configs with new names using - as a separator instead of _, which may prevent connection to existing resources; upgrade to v2.9.0 to resolve
v2.8.0 · Jul 2022
· source
· release history
Adds pull_policy support to control image pulling behavior for services
v2.5.0 · Apr 2022
· source
· release history
Add :z and :Z SELinux labels to volume bind mounts
v2.2.3 · Jan 2022
· source
· release history
Allows setting a custom name for volumes using the name parameter in volume definitions
1.17.0 · Nov 2017
· source
· release history
Adds name parameter to volume definitions for specifying custom volume names
1.16.0 · Aug 2017
· source
· release history
example
Mount a volume with SELinux labels for containers running in a restrictive environment.$ docker compose run -v ./data:/data:Z app
v2.2.3 · Jan 2022
· source
Mount a named host volume by name instead of a path bind in the Compose file.$ volumes: - mydatavolume:/data
1.5.0 · Nov 2015
· source
+Compose reconciliation engineshippedAligns observed container/network/volume state with the expected state declared in a Compose file, tracking create and remove operations as first-class steps in the deployment plan.13 releases · 2 other sources · first seen Jun 2015▸
release
13 total
Up now ignores StartOptions.Project and operates only on the project passed directly to it; callers relying on StartOptions.Project must pass the project directly.
v5.7.0 · Nov 2026
· source
· release history
New image digest reconciliation logic in compose up prevents unnecessary container recreation by re-evaluating digests more accurately.
v5.5.0 · Aug 2026
· source
· release history
Existing containers may be recreated the first time you run compose up after upgrading to v5.5.0, as image digests are re-evaluated under the new reconciliation logic.
v5.5.0 · Aug 2026
· source
· release history
Existing containers may be recreated the first time you run compose up after upgrading to v5.5.0, as image digests are re-evaluated using the new reconciliation logic.
v5.5.0 · Aug 2026
· source
· release history
Models network lifecycle in the reconcile plan, allowing networks to be properly managed during resource reconciliation.
v5.4.0 · Aug 2026
· source
· release history
Adds network lifecycle modelling to the reconciliation plan, enabling Compose to track network create/remove operations as first-class steps in the deployment plan.
v5.4.0 · Aug 2026
· source
· release history
docs
Defines and runs multi-container Docker applications using a Compose file with a single command.
example
Test the new smart recreate behavior that only updates services with configuration changes$ docker-compose up --x-smart-recreate
1.3.0 · Jun 2015
· source
+Container lifecycle control flagsshippedProvides command-line flags to control graceful stop timeouts, force recreation, and send specific signals to running containers.13 releases · 1 other source · first seen Feb 2015▸
Also counts toward: Command-line interface
release
13 total
Reuse existing dependency containers without recreating them by passing --no-recreate to docker compose run.
v5.7.0 · Nov 2026
· source
· release history
Adds --wait option to the compose start command to block until services are healthy.
v5.0.0 · Dec 2025
· source
· release history
Adds the ability to select a specific service to stop when running docker compose down <service>
v2.19.0 · Jun 2023
· source
· release history
kill subcommand simplifies invocation by requiring only the project name argument.
v2.3.4 · Mar 2022
· source
· release history
docker compose up gains --always-recreate-deps flag to force recreation of dependent services alongside their owner
1.19.0 · Feb 2018
· source
· release history
Adds --timeout flag to docker-compose down to configure the time allowed for container stopping.
1.18.0 · Dec 2017
· source
· release history
example
Stop a specific container in a multi-service stack without tearing down the rest.$ docker compose down web-worker
v2.19.0 · Jun 2023
· source
+Service image pushingshippedPushes service images to configured registries.12 releases · 2 other sources · first seen Jul 2016▸
release
12 total
Skip images not available locally during push with the new --ignore-missing flag on docker compose push.︀︄︇︀︅︉︀︅︀︀︃︀︀︅︅︀︅︊︀︄︆︀︃︄
v5.7.0 · Nov 2026
· source
· release history
Adds new library API capabilities: PushOptions.IgnoreMissing lets callers skip locally absent images when calling api.Compose.Push, and UpOptions.Validate() lets callers validate Up option combinations upfront, returning *api.IncompatibleOptionsError (matchable with errors.Is(err,…
v5.7.0 · Nov 2026
· source
· release history
Adds --with-env flag to the publish command to include environment variables when publishing.
v2.33.0 · Feb 2025
· source
· release history
push now considers build.tags when pushing images
v2.23.2 · Nov 2023
· source
· release history
Introduces the --resolve-image-digests CLI flag for the compose publish command to ensure published service images use fixed digests rather than tags.
v2.23.1 · Nov 2023
· source
· release history
Adds --dry-run flag to the compose publish command to simulate publishing without pushing images
v2.23.0 · Oct 2023
· source
· release history
example
Push all service images, silently skipping any that are not present in the local image store.$ docker compose push --ignore-missing
v5.7.0 · Nov 2026
· source
Push all service images to their configured registries$ docker-compose push
1.8.0 · Jul 2016
· source
+OCI artifact publishing and pullingverifiedSupports publishing and pulling Compose applications as OCI artifacts, including referenced images, with optional insecure-registry support for artifact pulls.9 releases · 5 other sources · first seen Oct 2014▸
Also counts toward: Command-line interface
release
9 total
Adds ability to publish a Compose application as a self-contained bundle of compose.yaml and images.
v2.40.0 · Oct 2025
· source
· release history
Promotes publish to a regular top-level Compose command for publishing Compose stacks as OCI artifacts.
v2.34.0 · Mar 2025
· source
· release history
Adds COMPOSE_PARAMIKO_SSH environment variable to enable the previous Paramiko-based SSH implementation
1.28.0 · Jan 2021
· source
· release history
The SSH connection approach changes from Paramiko to shell-out to the local SSH client (previous behavior can be restored with COMPOSE_PARAMIKO_SSH)
1.28.0 · Jan 2021
· source
· release history
Added support for connecting to the Docker Engine using the ssh protocol.
1.24.0 · Mar 2019
· source
· release history
Adds env_file key to docker-compose.yml for loading environment variables from files.
1.1.0 · Feb 2015
· source
· release history
command line
--insecure-registry — Use insecure registry to pull Compose OCI artifacts. Doesn't apply to images
v5.0.0-rc.1 · Nov 2025
· command-line history
--app — Published compose application (includes referenced images)
v2.40.0 · Oct 2025
· command-line history
example
Publish a Compose stack as an OCI artifact to a registry for remote reuse.$ docker compose publish registry.example.com/myorg/mystack:latest
v2.34.0 · Mar 2025
· source
Pass build arguments in a Compose V2 file$ build: context: . args: buildno: 1
1.6.0 · Feb 2016
· source
Pull images from a registry using self-signed certificates without errors$ fig pull --allow-insecure-ssl myimage:latest
1.0.1 · Nov 2014
· source
+Host-side environment variable interpolationshippedInterpolates environment variables defined on the host within Compose file fields like `command` and `entrypoint` before passing them to containers.12 releases · 2 other sources · first seen Nov 2015▸
release
12 total
New config --no-env-resolution flag outputs compose config without interpolating environment variables.
v2.35.0 · Apr 2025
· source
· release history
Introduces --env-from-file flag on docker compose run to inject environment variables from a file into one-off containers.
v2.34.0 · Mar 2025
· source
· release history
Introduces the COMPOSE_ENV_FILES environment variable to specify a list of .env files for Compose to load
v2.23.0 · Oct 2023
· source
· release history
Compose will no longer accept whitespace in variable names sourced from environment files.
1.24.0 · Mar 2019
· source
· release history
Added ${VAR:?err} and ${VAR?err} variable interpolation syntax for mandatory variable checks
1.19.0 · Feb 2018
· source
· release history
Added support for shell-style inline defaults in variable interpolation: ${FOO-default} and ${FOO:-default}
1.9.0 · Nov 2016
· source
· release history
docs
file that are also used as environment variables in your container's environment.
seen Oct 2026
· source
example
Inject secrets or environment variables from a local file into a one-off task container without baking them into the service definition.$ docker compose run --env-from-file ./secrets.env worker python manage.py migrate
v2.34.0 · Mar 2025
· source
+Advanced build engine integrationshippedDelegates image building to Buildx Bake for richer features and performance.10 releases · 3 other sources · first seen Nov 2024▸
release
10 total
Pass the --parallel concurrency limit through to BuildKit bake as --jobs when building with bake.
v5.7.0 · Nov 2026
· source
· release history
Introduces --insecure-registry flag (reserved for testing scenarios).
v5.0.0 · Dec 2025
· source
· release history
Delegates all image building to Docker Bake (internal BuildKit builder removed), aligning with docker build behavior.
v5.0.0 · Dec 2025
· source
· release history
Introduces provenance and sbom build attributes support for supply-chain metadata.
v2.39.0 · Jul 2025
· source
· release history
Supports cache_to in Compose build configuration when using Bake as the build backend.
v2.37.3 · Jun 2025
· source
· release history
Supports extra_hosts entries when building services with Bake.
v2.37.1 · Jun 2025
· source
· release history
example
Opt out of the new bake-based builder if your pipeline depends on the classic per-service build path.$ COMPOSE_BAKE=false docker compose up --build
v2.37.0 · Jun 2025
· source
Inspect the resolved Bake file Compose would use for a build — useful for debugging multi-service build graphs or handing off to docker buildx bake.$ docker compose build --print
v2.35.0 · Apr 2025
· source
Use Bake as the build backend for all services — useful when you want Bake's advanced build graph and caching features.$ COMPOSE_BAKE=1 docker compose build
v2.33.0 · Feb 2025
· source
+Unsupported Compose-file attribute warningsshippedSurfaces unknown keys in a Compose file with a warning rather than silently ignoring them.10 releases · 1 other source · first seen Mar 2014▸
Warns on unsupported Compose-file attributes so unknown keys are surfaced rather than silently ignored.
v5.6.0 · Oct 2026
· source
· release history
Add support for DOCKER_DEFAULT_PLATFORM environment variable
v2.1.0 · Nov 2021
· source
· release history
COMPOSE_COMPATIBILITY can be set by .env file
v2.1.0 · Nov 2021
· source
· release history
Adds support for extension fields (x-*) in compose file versions 2.x and 3.4
1.17.0 · Nov 2017
· source
· release history
Removed experimental flags --x-networking and --x-network-driver
1.6.0 · Feb 2016
· source
· release history
The hostname option in fig.yml is now split into a domainname option
0.5.0 · Jul 2014
· source
· release history
example
Force a full recreation of all containers ignoring configuration changes$ docker-compose up --force-recreate
1.4.0 · Aug 2015
· source
+Network isolation and IP supportshippedSupports creating internal-only networks, enabling IPv6, and defining link-local IPs.9 releases · 2 other sources · first seen Nov 2016▸
release
9 total
Supports gw_priority and enable_ipv4 network options in Compose files (requires Docker v28.0).
v2.33.1 · Feb 2025
· source
· release history
SHA256 checksums are included in every Compose v2 release
v2.0.1 · Sep 2021
· source
· release history
Compose files support priority key in service network mappings to define connection order
1.19.0 · Feb 2018
· source
· release history
Adds support for the options key in the ipam section of network definitions
1.13.0 · May 2017
· source
· release history
Adds identifying labels to networks created by Compose in formats 2.1 and up
1.10.0 · Jan 2017
· source
· release history
example
Pin gateway priority and explicitly enable IPv4 on a custom network when running Docker v28.0+.$ networks: mynet: driver: bridge driver_opts: {} ipam: config: - subnet: 192.168.10.0/24 enable_ipv4: true gw_priority: 10
v2.33.1 · Feb 2025
· source
Configure IPAM options for a network in Compose file format 2.2.$ version: '2.2' networks: default: ipam: driver: default options:
1.13.0 · May 2017
· source
+Orphan container cleanupshippedRemoves containers for services that were removed from the Compose file during up and down operations.8 releases · 3 other sources · first seen Apr 2016▸
release
8 total
Respects the COMPOSE_REMOVE_ORPHANS environment variable during up operations
v2.24.7 · Mar 2024
· source
· release history
Adds --remove-orphans flag to compose create command.
v2.16.0 · Feb 2023
· source
· release history
COMPOSE_REMOVE_ORPHANS env var now controls orphan cleanup on compose down
v2.6.1 · Jun 2022
· source
· release history
COMPOSE_IGNORE_ORPHANS environment variable allows ignoring orphaned containers during up/down operations.
v2.0.0 · Sep 2021
· source
· release history
Adds --profile flag to docker-compose config for filtering services by profile.
1.29.0 · Apr 2021
· source
· release history
example
Ensure orphaned containers created by previous runs are cleaned up when starting a new stack.$ COMPOSE_REMOVE_ORPHANS=true docker compose up
v2.24.7 · Mar 2024
· source
Start a stack without worrying about orphaned containers left by previous runs.$ COMPOSE_IGNORE_ORPHANS=1 docker compose up -d
v2.0.0 · Sep 2021
· source
Generate the effective configuration for only specific profiles, ignoring others.$ docker-compose config --profile web --profile db
1.29.0 · Apr 2021
· source
+Service resource tuningshippedAdds support for supplementary groups, OOM score adjustment, and container isolation modes.10 releases · first seen Nov 2016▸
release
10 total
Surfaces OpenTelemetry shutdown errors when running with --debug, making tracing misconfiguration visible instead of silently swallowed.
v5.5.1 · Sep 2026
· source
· release history
Adds --debug flag to surface OpenTelemetry (otel) shutdown errors for tracing diagnostics
v5.5.1 · Sep 2026
· source
· release history
Adds oom_score_adj field to the service definition for controlling OOM killer priority
v2.14.0 · Dec 2022
· source
· release history
Propagation of GroupAdd from ServiceConfig to HostConfig so group additions are applied during container creation
v2.2.3 · Jan 2022
· source
· release history
Supports isolation parameter in service definitions within docker-compose.yml.
1.18.0 · Dec 2017
· source
· release history
Adds storage_opt parameter support in service definitions (v2.1+) for non-v3 formats
1.15.0 · Jul 2017
· source
· release history
+Container lifecycle monitoringshippedMonitors and displays container events in real-time.5 releases · 5 other sources · first seen Feb 2016▸
Also counts toward: Command-line interface
release
Adds --since and --until flags to the events command for time-bounded event filtering.
v2.39.0 · Jul 2025
· source
· release history
Introduces the new docker compose stats command to view resource usage of compose services
v2.24.0 · Jan 2024
· source
· release history
compose can now run as a standalone binary (the docker compose subcommand is still the primary CLI entry point for most users)
v2.0.1 · Sep 2021
· source
· release history
Added a --all flag to docker-compose ps to include stopped one-off containers in the command's output.
1.24.0 · Mar 2019
· source
· release history
docker-compose events command for monitoring container events
1.6.0 · Feb 2016
· source
· release history
example
Filter container events to a specific time window — useful for post-incident review of what happened during a deployment window.$ docker compose events --since 2025-07-01T10:00:00 --until 2025-07-01T10:30:00
v2.39.0 · Jul 2025
· source
View resource consumption (CPU/Memory) for all services in the current project$ docker compose stats
v2.24.0 · Jan 2024
· source
Pass multiple status values to filter running and stopped containers.$ compose ps --status running --status stopped
v2.0.1 · Sep 2021
· source
List all containers including stopped one-off instances created by run.$ docker-compose ps --all
1.24.0 · Mar 2019
· source
Monitor container lifecycle events in real-time$ docker-compose events
1.6.0 · Feb 2016
· source
+Provider relay networkshippedDeploys a network relay for provider services and isolates relay traffic on a dedicated network, separate from application networks.7 releases · 1 other source · first seen Feb 2015▸
release
7 total
Adds publish-endpoint capability that deploys a network relay for provider services.
v5.6.0 · Oct 2026
· source
· release history
Adds get-relay-info so providers know where to bind for the relay.
v5.6.0 · Oct 2026
· source
· release history
Adds a dedicated network for the provider relay link, isolating relay traffic from application networks.
v5.6.0 · Oct 2026
· source
· release history
New publish-endpoint deploys a network relay for provider services, exposing where providers bind via get-relay-info.
v5.6.0 · Oct 2026
· source
· release history
COMPOSE_TLS_VERSION environment variable to specify TLS version for Docker Engine interaction
1.8.0 · Jul 2016
· source
· release history
Added support for all the same TLS configuration flags used by the docker client: --tls, --tlscert, --tlskey, etc.
1.7.0 · Apr 2016
· source
· release history
example
Force the use of TLS 1.2 when interacting with the Docker Engine$ COMPOSE_TLS_VERSION=TLSv1_2 docker-compose up
1.8.0 · Jul 2016
· source
+Compose file version managementshippedIntroduces version 2.1 of the Compose specification and enforces minimum Docker Engine versions.5 releases · 3 other sources · first seen Feb 2016▸
release
COMPOSE_COMPATIBILITY environment variable enables compatibility mode options.
1.26.0 · Jun 2020
· source
· release history
Allow compatibility option with COMPOSE_COMPATIBILITY environment variable
v1.25.2 · Jan 2020
· source
· release history
Adds version 2.1 of the docker-compose.yml specification for use with Docker Engine 1.12+
1.9.0 · Nov 2016
· source
· release history
Requires Docker Engine 1.9.1 or later, or 1.10.0 if using version 2 of the Compose File format
1.6.1 · Feb 2016
· source
· release history
Compose 1.6 requires Docker Engine 1.9.1+ or 1.10.0 for Compose File format V2
1.6.0 · Feb 2016
· source
· release history
example
Run compose up in compatibility mode for older docker engine versions.$ export COMPOSE_COMPATIBILITY=1 && docker-compose up
1.26.0 · Jun 2020
· source
Enable legacy compatibility mode for older compose file formats or behaviors.$ COMPOSE_COMPATIBILITY=1 docker-compose up
v1.25.2 · Jan 2020
· source
Scan for image usage in the current project to audit dependencies.$ docker-compose images
1.12.0 · Apr 2017
· source
+Compose port lookupshippedAllows `docker compose port` to resolve a published port without requiring the internal port to be specified.5 releases · 2 other sources · first seen Jul 2014▸
Also counts toward: Command-line interface
release
PRIVATE_PORT is now optional for docker compose port to allow flexible port mapping.
v5.6.0 · Oct 2026
· source
· release history
Makes PRIVATE_PORT optional for docker compose port, so the command works without specifying an internal port.︀︄︇︀︅︉︀︅︀︀︃︀︀︅︅︀︅︊︀︄︆︀︃︄
v5.6.0 · Oct 2026
· source
· release history
Removes the publish limitation on bind mounts, enabling port publishing alongside bind-mounted services.
v2.38.0 · Jun 2025
· source
· release history
Adds --service-ports flag to docker-compose run for exposing service ports.
1.1.0 · Feb 2015
· source
· release history
Adds the fig port command to output host port bindings for a service
1.0.0 · Oct 2014
· source
· release history
example
Retrieve the mapped host port for a specific service without parsing verbose docker inspect output.$ fig port web-server 80
1.0.0 · Oct 2014
· source
Force a fresh build for an image, ignoring any cached layers.$ fig build --no-cache
0.5.2 · Jul 2014
· source
+Dynamic configuration injectionshippedAllows passing YAML configuration via standard input or dynamically generating it from stdout to avoid intermediate files.5 releases · 2 other sources · first seen Aug 2015▸
release
Adds use_api_socket option, enabling socket-based API communication for Compose services.
v2.37.2 · Jun 2025
· source
· release history
Adds target parameter support in network configurations for Compose file version 2.3
1.16.0 · Aug 2017
· source
· release history
Adds support for build labels in Compose file versions 2.1, 2.2, and 3.3.
1.14.0 · Jun 2017
· source
· release history
Added support for port range to single port in port mappings
1.12.0 · Apr 2017
· source
· release history
Enables reading YAML configuration from standard input by passing - as the filename argument
1.4.0 · Aug 2015
· source
· release history
example
Validate and print the merged, variable-resolved Compose configuration without starting anything$ docker-compose config
1.6.0 · Feb 2016
· source
Inject YAML configuration dynamically from stdout without a file$ echo 'redis: {image: redis}' | docker-compose --file - up
1.4.0 · Aug 2015
· source
+Configuration validationshippedsuggestedValidates and prints the merged, variable-resolved Compose configuration without starting any services.3 releases · 4 other sources · first seen Feb 2016▸
Suggested capability: Infrastructure-as-code security scanning. This is our guess, not confirmed.
Also counts toward: Command-line interface
release
Adds --pull flag to docker compose run, allowing control over image pull behavior before starting a one-off container.
v2.32.2 · Jan 2025
· source
· release history
docker-compose config supports --no-interpolate to disable variable interpolation in the rendered output
1.25.0 · Nov 2019
· source
· release history
docker-compose build accepts --quiet flag to suppress output during image building
1.25.0 · Nov 2019
· source
· release history
example
Pull the latest image before running a one-off task, ensuring your run command doesn't use a stale local image.$ docker compose run --pull always worker python manage.py migrate
v2.32.2 · Jan 2025
· source
Render the compose file structure without expanding environment variables for debugging.$ docker-compose config --no-interpolate
1.25.0 · Nov 2019
· source
Verify config integrity before deploying to detect accidental changes$ docker-compose config --hash
1.23.0 · Oct 2018
· source
Validate and print the merged, variable-resolved Compose configuration without starting anything$ docker-compose config
1.6.0 · Feb 2016
· source
+Deployment scalingshippedAllows defining and overriding the number of replicas for services in Compose file formats 2.2 and up.4 releases · 3 other sources · first seen May 2017▸
Also counts toward: Command-line interface
release
Adds a new top-level scale command to adjust replica counts
v2.22.0 · Sep 2023
· source
· release history
Added rollback_config support to the deploy configuration block in Compose file format version 3.7
1.22.0 · Jul 2018
· source
· release history
Adds the --scale flag to docker-compose up for overriding scaling values defined in Compose file version 2.2
1.13.0 · May 2017
· source
· release history
Adds support for the scale key in service definitions within Compose file version 2.2
1.13.0 · May 2017
· source
· release history
example
Scale a specific service to 5 replicas via the new scale command$ docker compose scale <service>=5
v2.22.0 · Sep 2023
· source
Define a rollback strategy for a service when using Compose file version 3.7$ version: '3.7' services: web: image: myapp deploy: rollback_config: parallelism: 2 delay: 10s
1.22.0 · Jul 2018
· source
Launch a service defined in Compose file v2.2 with an embedded entrypoint (init) and override the replica count via CLI.$ docker-compose up --scale myservice=5
1.13.0 · May 2017
· source
+Compose exec TTY controlverifiedAllows callers to disable pseudo-TTY allocation when running commands in a service container via `docker compose exec`.3 releases · 3 other sources · first seen Mar 2022▸
Also counts toward: Command-line interface
release
compose pull now honors pull_policy refresh windows (daily, weekly, every_N), so pulls are skipped when the policy window has not yet elapsed.
v5.5.0 · Aug 2026
· source
· release history
compose pull now honors pull_policy refresh windows (daily, weekly, every_N), skipping redundant pulls within the configured window.
v5.5.0 · Aug 2026
· source
· release history
Adds -i and -t flags to docker compose run and docker compose exec.
v2.3.0 · Mar 2022
· source
· release history
command line
--no-tty — Disable pseudo-TTY allocation. By default `docker compose exec` allocates a TTY.
v2.39.3 · Sep 2025
· command-line history
example
Use a weekly pull policy so compose pull skips re-pulling images that were already pulled within the last 7 days.$ services: web: image: myapp:latest pull_policy: weekly
v5.5.0 · Aug 2026
· source
Run a command with elevated capabilities for maintenance tasks.$ docker compose run --cap-add=NET_ADMIN app sh -c 'ip addr'
v2.19.0 · Jun 2023
· source
+Parallel image pullingshippedSupports pulling multiple service images concurrently to reduce deployment time.4 releases · 2 other sources · first seen Apr 2018▸
release
Supports refresh pull policy, letting services always pull a fresh image even when one is already present locally.
v2.34.0 · Mar 2025
· source
· release history
--ignore-buildable flag to ignore images marked as buildable during pull operations
v2.15.0 · Jan 2023
· source
· release history
docker-compose pull runs in parallel by default; use --no-parallel to opt out and suppress the deprecation warning for --parallel.
1.21.0 · Apr 2018
· source
· release history
example
Pull services without building images that have a pre-built Dockerfile defined in the compose file$ docker compose --ignore-buildable pull
v2.15.0 · Jan 2023
· source
Disable parallel pulls for older Docker Engine versions that do not support concurrent image pulls.$ docker-compose pull --no-parallel
1.21.0 · Apr 2018
· source
+Bundle generation for deploymentshippedGenerates a bundle file compatible with Docker Stack for deployment.3 releases · 3 other sources · first seen Jul 2016▸
Also counts toward: Command-line interface
release
The compose start command now fails immediately if a dependency listed in the service is missing, rather than continuing execution.
v2.23.1 · Nov 2023
· source
· release history
--include-deps flag added to docker-compose pull to pull dependencies along with specified services
1.20.0 · Mar 2018
· source
· release history
docker-compose bundle command that generates a bundle file for Docker Stack
1.8.0 · Jul 2016
· source
· release history
example
Publish your stack with pinned image digests to prevent tag drift in production environments.$ docker compose publish --resolve-image-digests ./docker-compose.yml
v2.23.1 · Nov 2023
· source
Pull all dependent images when running a subset of services$ docker-compose pull --include-deps frontend
1.20.0 · Mar 2018
· source
Generate a bundle file for deployment with Docker Stack$ docker-compose bundle
1.8.0 · Jul 2016
· source
+Provider service configuration retrievalshippedAllows provider plugins to request their own resolved service configuration from Compose.5 releases · first seen Dec 2017▸
Also counts toward: Plugin API support
release
Adds get-service-config provider request so providers can retrieve their resolved service configuration.
v5.6.0 · Oct 2026
· source
· release history
New get-service-config provider request capability added for retrieving service configuration.
v5.6.0 · Oct 2026
· source
· release history
Supports external binaries as service providers, enabling plugins that extend Compose behaviour via service.provider.
v2.36.0 · May 2025
· source
· release history
Adds first-class external services support to integrate Docker Model Runner into Compose projects.
v2.35.0 · Apr 2025
· source
· release history
Adds --memory flag to docker-compose build to specify container memory limits during image builds.
1.18.0 · Dec 2017
· source
· release history
+Service lifecycle hooksshippedEnables executing actions tied to specific service events for workflow automation.5 releases · first seen Oct 2024▸
release
Captures and surfaces lifecycle hook output (stdout/stderr) directly in Compose output, so pre/post hook activity is visible without digging into container logs.
v5.5.1 · Sep 2026
· source
· release history
Captures and surfaces lifecycle hook output from services, making it available in logs
v5.5.1 · Sep 2026
· source
· release history
Adds stop lifecycle hook support for external providers, enabling clean shutdown callbacks when Compose stops externally-managed services.
v5.1.4 · May 2026
· source
· release history
Runs lifecycle hooks on service restart.
v5.0.0 · Dec 2025
· source
· release history
Introduces service hooks, enabling lifecycle hook actions tied to service events.
v2.30.0 · Oct 2024
· source
· release history
+Init containersshippedAllows services to declare initialization containers that run and complete successfully before the main service starts, suitable for tasks such as database migrations.4 releases · 1 other source · first seen May 2017▸
release
Supports pre-start init containers, allowing services to declare initialization containers that run and complete before the main service starts.
v5.3.0 · Jul 2026
· source
· release history
Supports init containers natively, allowing services to declare pre-start containers that run and complete before the main service starts.
v5.3.0 · Jul 2026
· source
· release history
Added init parameter support in service configurations for Docker Engine 18.06.0+
1.22.0 · Jul 2018
· source
· release history
Adds support for the init key in service definitions within Compose file version 2.2
1.13.0 · May 2017
· source
· release history
example
Run a setup task (e.g., DB migration) in an init container that must succeed before your app service starts.$ services: app: image: myapp:latest depends_on: init-migrate: condition: service_completed_successfully init-migrate: image: myapp:latest command: ["python", "manage.py", "migrate"] x-init: true
v5.3.0 · Jul 2026
· source
+Secret managementshippedSupports defining and managing secrets within Compose file format version 3.1.4 releases · 1 other source · first seen Feb 2017▸
release
Compose now rejects configuration files using secrets.*.driver, secrets.*.template_driver, configs.*.driver, or configs.*.template_driver keys that were previously accepted.
v2.23.1 · Nov 2023
· source
· release history
Rejects compose files that specify a driver or template_driver on secrets or configs entries, enforcing stricter schema validation.
v2.23.1 · Nov 2023
· source
· release history
Adds build.secrets support to define build-time secrets in compose files
v2.5.0 · Apr 2022
· source
· release history
Adds version 3.1 of the docker-compose.yml specification, enabling secret management and requiring Docker Engine 1.13.0+
1.11.0 · Feb 2017
· source
· release history
docs
Secrets are supported on Linux containers only. Compose delivers each secret by bind-mounting a single file into the container, and Windows containers support bind-mounting directories only.
seen Aug 2026
· source
+ANSI output controlshippedProvides flags to control ANSI output formatting in the shell interface.4 releases · 1 other source · first seen Jan 2021▸
release
Adds --progress flag to docker compose up and other commands to configure the progress UI style
v2.19.0 · Jun 2023
· source
· release history
Supports disabling colored output via NO_COLOR environment variable instead of relying on ANSI TUI
v2.17.3 · Apr 2023
· source
· release history
Enables plain text progress output when ansi=never environment variable is set
v2.3.3 · Mar 2022
· source
· release history
Adds new flag for ANSI output control (shell)
1.28.0 · Jan 2021
· source
· release history
example
Configure the CLI to display progress using a minimal, text-only interface.$ docker compose --progress plain up
v2.19.0 · Jun 2023
· source
+Manual container creationshippedCreates containers defined in the Compose file without starting them.4 releases · 1 other source · first seen Feb 2016▸
Also counts toward: Command-line interface
release
--dry-run flag added to docker compose create to validate configuration without starting services
v2.17.3 · Apr 2023
· source
· release history
Adds --scale flag to compose create command.
v2.16.0 · Feb 2023
· source
· release history
Adds the --no-start flag to the up command to create resources without starting services
1.17.0 · Nov 2017
· source
· release history
docker-compose create creates containers without starting them
1.6.0 · Feb 2016
· source
· release history
example
Create all defined resources (networks, volumes, containers) without automatically starting the services.$ docker-compose up --no-start
1.17.0 · Nov 2017
· source
+Log output controlshippedEnhances log output with flags to follow real-time output, show timestamps, and limit tail lines.4 releases · 1 other source · first seen Apr 2016▸
Also counts toward: Command-line interface
release
Adds --timestamp option to compose up output
v2.14.1 · Dec 2022
· source
· release history
Adds a new flag to disable log prefixes
1.28.0 · Jan 2021
· source
· release history
Added --follow, --timestamp, and --tail flags to the docker-compose logs command
1.7.0 · Apr 2016
· source
· release history
docker-compose logs no longer follows log output by default. Use -f to get the old default behaviour.
1.7.0 · Apr 2016
· source
· release history
example
Set the log level to debug for verbose troubleshooting of compose operations$ docker-compose --log-level debug up -d
1.20.0 · Mar 2018
· source
+Temporary file and shared memory supportshippedSupports defining `tmpfs` mounts and `shm_size` parameters in service definitions.5 releases · first seen Apr 2016▸
release
Adds mode field for tmpfs mount permissions in the service definition
v2.14.0 · Dec 2022
· source
· release history
tmpfs.size property now supported in volume mappings for Compose file formats 3.6 and 2.3+
1.20.0 · Mar 2018
· source
· release history
Supports shm_size parameter in build configuration sections of docker-compose.yml.
1.18.0 · Dec 2017
· source
· release history
Adds support for the shm_size option in build configuration for version 2.3
1.17.0 · Nov 2017
· source
· release history
Compose files now support the tmpfs and shm_size options
1.7.0 · Apr 2016
· source
· release history
+Compose SDK integrationshippedOfficially supports use as a Go SDK for embedding Compose into third-party software.4 releases · first seen Dec 2025▸
Also counts toward: Client SDKs
release
compose.ServiceHash, compose.NetworkHash, and compose.VolumeHash are no longer exported; code that referenced them must switch to the internal package or remove the call.
v5.7.0 · Nov 2026
· source
· release history
api.Compose is now assembled from six smaller focused interfaces with the same method set, making it easier to implement or wrap in library code.
v5.7.0 · Nov 2026
· source
· release history
Adds LoadProject to the Compose API definition, expanding SDK surface.
v5.0.0 · Dec 2025
· source
· release history
Officially supports use as a Go SDK for embedding Compose into third-party software without requiring Docker CLI.
v5.0.0 · Dec 2025
· source
· release history
+Stack teardown and down command controlshippedControls validation, exit codes, and CI/CD safe behavior for service removal and teardown operations.3 releases · 1 other source · first seen May 2022▸
Also counts toward: CI/CD pipeline integration, Command-line interface
release
DownOptions.Images is now typed as api.ImagePruneMode; a string variable passed where it was previously accepted now requires an explicit conversion.
v5.7.0 · Nov 2026
· source
· release history
compose down now rejects arguments other than the service name(s), preventing accidental execution on wrong targets.
v2.5.1 · May 2022
· source
· release history
compose down now exits with code 0 when there are no services or networks to remove.
v2.5.1 · May 2022
· source
· release history
example
Silently skip teardown steps in CI/CD pipelines if the environment was never started.$ docker compose down; echo "Teardown complete (exit $?)"
v2.5.1 · May 2022
· source
+Configuration inheritance via extendsshippedAllows services to inherit configuration from other services in different or the same Compose files, with optional file resolution.4 releases · first seen Apr 2015▸
release
docker compose bake publish now correctly handles extends statements when using profiles
v2.40.1 · Oct 2025
· source
· release history
The extends directive now allows omitting the file option when copying configuration from another service in the same Compose file
1.5.0 · Nov 2015
· source
· release history
Allows extends directive to omit the file option, defaulting to the current composition file
1.4.0 · Aug 2015
· source
· release history
Adds extends option in docker-compose.yml to let a service inherit configuration from another service in a different configuration file
1.2.0 · Apr 2015
· source
· release history
+Cross-platform binary supportshippedBuilds and supports specific architectures including linux/riscv64, windows/arm64, and ppc64le.4 releases · first seen Apr 2022▸
Adds ppc64le architecture support for docker compose binary
v2.5.0 · Apr 2022
· source
· release history
+Parallel service startupshippedStarts services in parallel where possible to reduce deployment time.3 releases · 1 other source · first seen Apr 2016▸
release
Adds --parallel flag to docker compose up to limit concurrent engine calls
v2.14.1 · Dec 2022
· source
· release history
Added COMPOSE_PARALLEL_LIMIT environment variable to limit simultaneous parallel operations (default 64)
1.19.0 · Feb 2018
· source
· release history
docker-compose up, and docker-compose start will now start containers in parallel where possible
1.7.0 · Apr 2016
· source
· release history
example
Run a stack but restrict concurrency to avoid overwhelming the engine$ docker compose up --parallel 2
v2.14.1 · Dec 2022
· source
+Custom volume driver supportshippedEnables specifying custom volume drivers for service volumes in the Compose file.3 releases · 1 other source · first seen Aug 2015▸
release
Adds --build flag to compose run for building images during execution
v2.13.0 · Nov 2022
· source
· release history
Adds --ssh flag to pass SSH authentications defined in the compose file or via CLI
v2.4.0 · Apr 2022
· source
· release history
Adds volume_driver option in docker-compose.yml to specify custom volume drivers
1.4.0 · Aug 2015
· source
· release history
example
Run a service and automatically build its image if missing or out of date$ docker compose run --build <service_name>
v2.13.0 · Nov 2022
· source
+Network namespace sharingshippedEnables services to share another service's network namespace using the `net: container:<service>` syntax.3 releases · 1 other source · first seen Apr 2015▸
release
Added support for the internal parameter in network definitions to create internal-only networks
1.9.0 · Nov 2016
· source
· release history
Added support for the enable_ipv6 parameter in network definitions to enable IPv6 networking
1.9.0 · Nov 2016
· source
· release history
Enables net: container:<service> syntax to share another service's network namespace
1.2.0 · Apr 2015
· source
· release history
example
Enable the service's init process (e.g., tini) to handle signals correctly$ version: '3.7' services: app: image: myapp init: true
1.22.0 · Jul 2018
· source
+Enhanced logging output controlshippedProvides options to select specific replica logs and view resource usage statistics.2 releases · 1 other source · first seen Jan 2024▸
release
Monitor resource usage across all running Compose projects at once with the new --all-projects flag on docker compose stats, and roll up per-service totals with --aggregate.
v5.7.0 · Nov 2026
· source
· release history
Adds logs --index flag to select specific replica containers from logs output
v2.24.0 · Jan 2024
· source
· release history
example
Watch live resource usage rolled up across every running Compose project on the host.$ docker compose stats --all-projects --aggregate
v5.7.0 · Nov 2026
· source
+Configuration variable introspectionshippedLists available model variables within the Compose configuration.2 releases · 1 other source · first seen Mar 2024▸
Also counts toward: Command-line interface
release
Adds --models flag to the config command to inspect model configuration.
v2.39.0 · Jul 2025
· source
· release history
Introduces compose config --variables subcommand to list available compose model variables
v2.26.0 · Mar 2024
· source
· release history
example
Dump the raw compose config with all env-var placeholders intact (no substitution), handy for auditing or templating pipelines that do their own variable expansion.$ docker compose config --no-env-resolution
v2.35.0 · Apr 2025
· source
+Configuration file inclusionshippedSupports loading external or remote Compose configuration files into the current project.2 releases · 1 other source · first seen Jul 2023▸
release
Adds experimental include support for loading remote Compose files from Git repositories
v2.21.0 · Aug 2023
· source
· release history
Add support for include in https://github.com/compose-spec/compose-go/pull/416
v2.20.0 · Jul 2023
· source
· release history
example
Reference an OCI Compose artifact directly with the -f flag alongside a local override file.$ docker compose -f oci://registry.example.com/myapp:latest -f compose.override.yml up
v2.30.0 · Oct 2024
· source
+Orphan container managementshippedIdentifies and automatically removes orphaned containers during various operations.2 releases · 1 other source · first seen Jan 2024▸
Also counts toward: Command-line interface
release
Adds --prune flag to docker compose watch, automatically removing containers for services no longer defined.
v2.29.0 · Jul 2024
· source
· release history
Adds ps --orphans flag to include or exclude orphaned containers in project listings
v2.24.0 · Jan 2024
· source
· release history
example
Automatically remove orphaned containers during a watch session as services are removed from your compose file.$ docker compose watch --prune
v2.29.0 · Jul 2024
· source
+Automatic project name normalizationshippedEnforces lowercase project names, rejecting mixed case identifiers.3 releases · first seen Apr 2022▸
release
Project names must strictly be lowercase alphanumeric, -, or _ starting with a letter/number; other characters are rejected
v2.17.3 · Apr 2023
· source
· release history
Project names must now be lowercase alphanumeric characters, -, or _ and start with a letter/number; previously allowed characters are now invalid.
v2.17.0 · Mar 2023
· source
· release history
The project name must now be lowercase, previously allowed mixed case
v2.5.0 · Apr 2022
· source
· release history
+Compose file syntax tighteningshippedsuggestedEnforces strict typing for specific keys, rejecting booleans in mappings where strings are required.3 releases · first seen Apr 2016▸
Suggested capability: Infrastructure-as-code security scanning. This is our guess, not confirmed.
release
YAML boolean values must now use YAML 1.2 standard (true/false); legacy values like yes, on, True, etc., are rejected
v2.17.3 · Apr 2023
· source
· release history
Only YAML 1.2 boolean values (true / false) are accepted for compose files; deprecated YAML 1.1 values (~y|Y|yes|Yes|YES|n|N|no|No|NO|True|TRUE|False|FALSE|on|On|ON|off|Off|OFF~) are no longer supported and will cause parsing errors.
v2.17.0 · Mar 2023
· source
· release history
Booleans are no longer allows as values for mappings in the Compose file (for keys environment, labels and extra_hosts). Boolean values should be quoted so they become string values.
1.7.0 · Apr 2016
· source
· release history
+Stale container persistence controlshippedControls whether stale containers persist after a stack shutdown.1 release · 2 other sources · first seen Apr 2022▸
release
Uses the Docker CLI directly to pass --autoremove flag during cleanup operations
v2.4.1 · Apr 2022
· source
· release history
example
Launch isolated services while automatically removing stale containers and scaling instances.$ docker compose create --remove-orphans --scale=web=3
v2.16.0 · Feb 2023
· source
Control whether stale containers persist after a stack shutdown.$ COMPOSE_REMOVE_ORPHANS=true docker compose down
v2.6.1 · Jun 2022
· source
+Container removal scope extensionshippedExtends container removal commands to include containers created by `docker-compose run`.3 releases · first seen Jul 2016▸
Also counts toward: Command-line interface
release
The project name must now be lowercase, previously allowed mixed case
v2.5.0 · Apr 2022
· source
· release history
docker compose up now supports --renew-anon-volumes (-V) to prevent recovering volume data from previous containers for anonymous volumes
1.19.0 · Feb 2018
· source
· release history
docker-compose rm now removes containers created by docker-compose run by default
1.8.0 · Jul 2016
· source
· release history
+Custom project name injection for run commandsshippedPasses a specific project name into containers started via `docker-compose run` using the `COMPOSE_PROJECT_NAME` environment variable.2 releases · 1 other source · first seen Sep 2020▸
release
Enforces COMPOSE_PROJECT_NAME environment variable on all commands for project name consistency
v2.4.0 · Apr 2022
· source
· release history
COMPOSE_PROJECT_NAME environment variable is now passed into containers in docker-compose run commands.
1.27.0 · Sep 2020
· source
· release history
example
Pass a specific project name to the container when using docker-compose run.$ COMPOSE_PROJECT_NAME=my-app docker-compose run service-name
1.27.0 · Sep 2020
· source
+Run command workdir supportshippedAdds a flag to specify the working directory for containers started via the run command.3 releases · first seen Apr 2016▸
Also counts toward: Command-line interface
release
docker-compose exec now supports the --workdir flag to set the working directory for the executed command.
1.21.0 · Apr 2018
· source
· release history
--use-aliases flag added to docker-compose run to use network aliases declared in service config
1.20.0 · Mar 2018
· source
· release history
Added the --workdir flag to docker-compose run
1.7.0 · Apr 2016
· source
· release history
+Interactive UI component supportshippedSupports configuring the compose backend to use a pluggable UI component for user interaction.2 releases · first seen Oct 2025▸
Also counts toward: Plugin API support
release
The interactive up keyboard menu is no longer built by the library; callers must set NavigationMenu: true AND supply an implementation via compose.WithNavigationMenu(...), or no menu is displayed.
v5.7.0 · Nov 2026
· source
· release history
Introduces WithPrompt to configure compose backend to use a plugable UI component for user interaction
v2.40.2 · Oct 2025
· source
· release history
+Network-scoped aliasesshippedAllows defining network-scoped aliases for services in Compose files to facilitate flexible service resolution.2 releases · first seen Feb 2016▸
release
Let a service opt out of its own name as a network alias in compose.yaml.
v5.7.0 · Nov 2026
· source
· release history
Adds support for the network.aliases config key in the Compose file to set network-scoped aliases for services
1.6.1 · Feb 2016
· source
· release history
+Service umask configurationshippedAllows setting a file-creation mask (`umask`) for a service via the Compose file so that new files created inside the container are not world-readable.1 release · 1 other source · first seen Nov 2026▸
release
Set a service's umask attribute in compose.yaml to control the file-creation mask inside the container.
v5.7.0 · Nov 2026
· source
· release history
example
Set a restrictive file-creation mask for a service so new files inside the container are not world-readable.$ services: api: image: myapp:latest umask: '0027'
v5.7.0 · Nov 2026
· source
+Provider plugin environment variable injectionshippedEnables provider plugins to set environment variables in the Compose environment without shell interpolation via a dedicated `rawsetenv` message type.2 releases · first seen Jun 2026▸
Also counts toward: Plugin API support
release
Adds rawsetenv message type for provider plugins, enabling plugins to set environment variables without interpolation.
v5.2.0 · Jun 2026
· source
· release history
Adds rawsetenv message type for provider plugins, enabling plugins to set environment variables without shell interpolation.
v5.2.0 · Jun 2026
· source
· release history
+Build platform specificationshippedAllows specifying target architectures for images built by compose via a `platforms` list.2 releases · first seen Sep 2022▸
release
The internal BuildKit builder has been removed; builds are now fully delegated to Docker Bake. Any workflow relying on Compose's internal builder will break on upgrade.
v5.0.0 · Dec 2025
· source
· release history
Compose.yaml now accepts a platforms list to specify target architectures for images built by compose.
v2.11.0 · Sep 2022
· source
· release history
+AI model integrationshippedSupports defining AI models as first-class service types within Compose projects.2 releases · first seen Apr 2025▸
release
Introduces support for AI models as a new service type in Compose projects.
v2.38.0 · Jun 2025
· source
· release history
Adds first-class external services support to integrate Docker Model Runner into Compose projects.
v2.35.0 · Apr 2025
· source
· release history
+Project volume managementshippedProvides commands to list and audit volumes associated with the current Compose project.1 release · 1 other source · first seen Jun 2025▸
Also counts toward: Command-line interface
release
Adds a new docker compose volumes command for managing project volumes.
v2.38.0 · Jun 2025
· source
· release history
example
List all volumes associated with the current Compose project to audit persistent storage.$ docker compose volumes
v2.38.0 · Jun 2025
· source
+External service providersshippedEnables the use of external binaries or services as Compose provider plugins to extend functionality.2 releases · first seen May 2025▸
Also counts toward: Command-line interface, Plugin API support, Plugin system
release
Adds metadata subcommand support for provider services.
v2.37.0 · Jun 2025
· source
· release history
Supports external binaries as service providers, enabling plugins that extend Compose behaviour via service.provider.
v2.36.0 · May 2025
· source
· release history
+Volume digest pinning in configurationshippedAllows locking service image references to exact digests when outputting resolved Compose configuration.1 release · 1 other source · first seen May 2025▸
Also counts toward: Command-line interface
release
New config --lock-image-digests flag pins all service images to their current digest in the resolved config output.
v2.36.1 · May 2025
· source
· release history
example
Freeze all service image references to exact digests before committing a compose file to production — prevents silent image changes on re-deploy.$ docker compose config --lock-image-digests
v2.36.1 · May 2025
· source
+Dry-run simulation supportshippedAllows simulating commands like up, down, run, build, and teardown to check outcomes without creating or modifying resources.2 releases · first seen Feb 2023▸
Also counts toward: Command-line interface
release
Introduces docker compose build --check to validate build configuration without executing a build.
v2.36.0 · May 2025
· source
· release history
Introduces the experimental alpha dry-run subcommand for simulation without side effects.
v2.16.0 · Feb 2023
· source
· release history
+Build progress output controlshippedAllows controlling the style of build progress output (e.g., plain logs) for CI compatibility.1 release · 1 other source · first seen Feb 2025▸
Also counts toward: CI/CD pipeline integration
release
Adds BUILDKIT_PROGRESS environment variable support to control build progress output format.
v2.33.0 · Feb 2025
· source
· release history
example
Control build progress output style (e.g. plain logs) when building with Compose, handy in CI pipelines.$ BUILDKIT_PROGRESS=plain docker compose build
v2.33.0 · Feb 2025
· source
+Container export and commitshippedExports container filesystems or commits current container changes to a new image.2 releases · first seen Oct 2024▸
Also counts toward: Command-line interface
release
Adds docker compose commit command to commit container changes to an image.
v2.31.0 · Nov 2024
· source
· release history
Adds docker compose export command to export service container filesystems.
v2.30.0 · Oct 2024
· source
· release history
+Configuration generation from stateshippedGenerates a Compose configuration file based on an existing running setup.1 release · 1 other source · first seen Oct 2024▸
Also counts toward: Command-line interface
release
Adds docker compose generate as an alpha command for generating Compose configuration.
v2.30.0 · Oct 2024
· source
· release history
example
Generate a Compose configuration from an existing setup using the new alpha command.$ docker compose generate
v2.30.0 · Oct 2024
· source
+Storage driver and device configurationshippedSupports passing storage options to volume drivers and requesting CDI devices.2 releases · first seen Jan 2024▸
release
Supports CDI (Container Device Interface) device requests via the devices key in Compose files.
v2.30.0 · Oct 2024
· source
· release history
Add support for storage_opt configuration key in volume definitions to pass options to the storage driver
v2.24.4 · Jan 2024
· source
· release history
+Attach-on-start capabilityshippedEnables attaching to the main service containers immediately upon starting a stack.2 releases · first seen Sep 2021▸
Also counts toward: Command-line interface
release
Introduces the new docker compose attach subcommand to attach to running services
v2.24.0 · Jan 2024
· source
· release history
compose up --attach new subcommand/flag enables attaching to the main service containers immediately on start.
v2.0.0 · Sep 2021
· source
· release history
+Build dependency resolutionshippedAllows building a service along with all its transitive dependencies automatically.1 release · 1 other source · first seen Jan 2024▸
release
Adds --with-dependencies flag to docker compose build for transitive dependency building
v2.24.0 · Jan 2024
· source
· release history
example
Build a service and all of its transitive dependencies automatically$ docker compose build --with-dependencies my_service
v2.24.0 · Jan 2024
· source
+Custom up wait conditionshippedAllows specifying a custom wait condition for docker compose up instead of using the default timeout.2 releases · first seen Nov 2021▸
release
Add docker compose wait by @ulyssessouza in https://github.com/docker/compose/pull/10742
v2.20.0 · Jul 2023
· source
· release history
Introduces the --wait flag for docker compose up, allowing users to specify a custom wait condition instead of the default timeout
v2.1.1 · Nov 2021
· source
· release history
+Runtime container platform selectionshippedOverrides or determines the target architecture for container creation using environment variables or explicit flags.1 release · 1 other source · first seen Dec 2022▸
release
Uses the DOCKER_DEFAULT_PLATFORM environment variable to determine the platform when creating containers
v2.14.2 · Dec 2022
· source
· release history
example
Force all containers in a compose stack to run on ARM64 regardless of host architecture.$ DOCKER_DEFAULT_PLATFORM=linux/arm64 docker compose up -d
v2.14.2 · Dec 2022
· source
+Configuration conversion without consistency checksshippedConverts a Compose file to JSON/YAML without enforcing schema consistency checks.1 release · 1 other source · first seen Nov 2022▸
Also counts toward: Command-line interface, JSON data export
release
Adds --no-consistency flag to the convert subcommand
v2.13.0 · Nov 2022
· source
· release history
example
Convert a compose file to JSON/YAML without enforcing schema consistency checks$ docker compose convert --no-consistency docker-compose.yml
v2.13.0 · Nov 2022
· source
+Run-time image buildingshippedEnables running a service and automatically building its image if missing or out of date.1 release · 1 other source · first seen Nov 2022▸
release
Adds --build flag to compose run for building images during execution
v2.13.0 · Nov 2022
· source
· release history
example
Run a service and automatically build its image if missing or out of date$ docker compose run --build <service_name>
v2.13.0 · Nov 2022
· source
+Container file transfer and distributionshippedCopies files to and distributes binaries across multiple containers or service instances within a project.1 release · 1 other source · first seen May 2022▸
Also counts toward: Command-line interface
release
The compose cp command defaults to copying files to all containers of a service instead of just one.
v2.5.1 · May 2022
· source
· release history
example
Push a binary to every instance of a backend service for debugging or updates.$ docker compose cp update.sh backend:/tmp/
v2.5.1 · May 2022
· source
+Orphan container cleanup configurationshippedAllows forcing orphan container removal on commands that do not support the flag directly via an environment variable.1 release · 1 other source · first seen Mar 2022▸
release
Enables the COMPOSE_REMOVE_ORPHANS environment variable to force --remove-orphans behavior on commands that do not support the flag directly.
v2.3.0 · Mar 2022
· source
· release history
example
Force removal of orphaned containers on up without passing flags, via the new environment variable.$ COMPOSE_REMOVE_ORPHANS=true docker compose up -d
v2.3.0 · Mar 2022
· source
+Wait-for-completion dependencyshippedAllows configuring a service to wait until another service has exited with status 0 before starting.1 release · 1 other source · first seen Apr 2021▸
release
Adds conditional dependency support in depends_on allowing waits for service completion.
1.29.0 · Apr 2021
· source
· release history
example
Configure a service to wait until another service has exited with status 0 before starting.$ depends_on: healthcheck-service: condition: service_completed_successfully
1.29.0 · Apr 2021
· source
+External Docker CLI build invocationshippedUses the host's Docker CLI for building images during `docker-compose run` via an environment variable instead of the embedded Go builder.1 release · 1 other source · first seen Sep 2020▸
release
Setting COMPOSE_DOCKER_CLI_BUILD=1 makes docker-compose run invoke the Docker CLI for building images via docker build.
1.27.0 · Sep 2020
· source
· release history
example
Ensure docker-compose run uses the host's Docker CLI for building instead of the embedded Go builder.$ COMPOSE_DOCKER_CLI_BUILD=1 docker-compose run service-name
1.27.0 · Sep 2020
· source
+Dependency attachment during stack upshippedAttaches to the logs of dependent services immediately when starting a stack using the `--attach-dependencies` flag.1 release · 1 other source · first seen Jun 2020▸
Also counts toward: Command-line interface
release
up subcommand gains --attach-dependencies flag to attach to dependency services.
1.26.0 · Jun 2020
· source
· release history
example
Attach to dependent services' logs immediately when starting the stack.$ docker-compose up --attach-dependencies
1.26.0 · Jun 2020
· source
+Parallel image buildingshippedEnables simultaneous construction of multiple service images to accelerate build pipelines.1 release · 1 other source · first seen Oct 2018▸
Also counts toward: Command-line interface
release
New --parallel flag for docker-compose build allows simultaneous image builds (up to 5)
1.23.0 · Oct 2018
· source
· release history
example
Speed up build pipelines by parallelizing image builds$ docker-compose build --parallel
1.23.0 · Oct 2018
· source
+Volume path handling updatesshippedChanges default volume path conversion behavior for Windows paths, requiring explicit environment variable activation to restore previous compatibility.2 releases · first seen Nov 2016▸
release
COMPOSE_FORCE_WINDOWS_HOST environment variable forces parsing of volume definitions as Windows-style even on UNIX
1.19.0 · Feb 2018
· source
· release history
Volume paths are no longer converted from C:\Users to /c/Users-style by default on Docker Toolbox/Machine; set the environment variable COMPOSE_CONVERT_WINDOWS_PATHS=1 to restore previous behavior
1.9.0 · Nov 2016
· source
· release history
+Container build labelsshippedSupports adding identifying labels to containers created during the build phase in Compose file formats 2.1 through 3.3.2 releases · first seen Jun 2017▸
Also counts toward: Command-line interface
release
Adds --label flag to docker-compose run for setting labels on the created service instance.
1.18.0 · Dec 2017
· source
· release history
Adds support for build labels in Compose file versions 2.1, 2.2, and 3.3.
1.14.0 · Jun 2017
· source
· release history
+Docker Hub session credential reuseshippedAutomatically reuses the Docker Desktop Hub session for Docker Hub registry credentials, removing the need for separate credential configuration.1 release · first seen Nov 2026▸
release
Docker Compose now uses the Docker Desktop Hub session for Docker Hub registry credentials automatically.
v5.7.0 · Nov 2026
· source
· release history
+Compose jobsshippedSupports manually-triggered jobs defined in a Compose file using compose-go job definitions and container-spec layering; scheduled jobs are not yet available.1 release · first seen Oct 2026▸
release
Adds partial support for jobs via compose-go jobs and container-spec layering; manually-triggered jobs are supported now, scheduled jobs are not yet available.
v5.6.0 · Oct 2026
· source
· release history
+Provider service image distributionshippedIncludes provider services in the image phase so their images are distributed on demand alongside regular service images.1 release · first seen Oct 2026▸
release
Includes provider services in the image phase, with image distribution on demand.
v5.6.0 · Oct 2026
· source
· release history
+Healthcheck disable supportshippedAllows services to explicitly disable healthcheck validation via the `healthcheck.disable: true` directive in Compose files.1 release · first seen Jan 2026▸
release
Handle healthcheck.disable: true in compose files
v5.0.2 · Jan 2026
· source
· release history
+Compose AI model configuration inspectionshippedAllows inspecting only the model-related configuration in a Compose file.1 other source · first seen Jul 2025▸
Inspect only the model-related configuration in a Compose file, e.g. to validate AI model service definitions before deploying.$ docker compose config --models
v2.39.0 · Jul 2025
· source
+Watch build progress outputshippedShows build progress in the terminal during watch rebuilds.1 release · first seen Jul 2025▸
release
Shows build progress in the terminal during watch rebuilds.
v2.39.0 · Jul 2025
· source
· release history
+Network-only configuration outputshippedAllows filtering the resolved Compose configuration to display only network definitions.1 release · first seen Jul 2025▸
release
Adds --networks flag to docker compose config to output only the networks section of the resolved configuration.
v2.38.2 · Jul 2025
· source
· release history
+Compose bridge to other environmentsshippedProvides a mechanism to translate or bridge Compose projects for use in external environments like Kubernetes.1 release · first seen Jun 2025▸
release
Adds use_api_socket option, enabling socket-based API communication for Compose services.
v2.37.2 · Jun 2025
· source
· release history
+Project environment mappingshippedAutomatically exposes the current project directory path as $PWD within service contexts.1 release · first seen Apr 2025▸
release
Sets $PWD environment variable automatically within Compose service contexts.
v2.35.0 · Apr 2025
· source
· release history
+Cross-service build contextsshippedAllows build configurations to reference and include context from other services in the Compose file.1 release · first seen Feb 2025▸
release
Supports additional_context referencing another service in the Compose file, enabling cross-service build contexts.
v2.33.0 · Feb 2025
· source
· release history
+Resource inclusion scopeshippedAllows including resources not explicitly used by services in output or state.1 release · first seen Apr 2024▸
release
Introduce --all-resources flag to include resources not explicitly used by services in the output or state.
v2.27.0 · Apr 2024
· source
· release history
+Multi-document YAML supportshippedEnables parsing and processing Compose files containing multiple YAML documents.1 release · first seen Aug 2023▸
release
Adds support for multi-document YAML files in compose configuration
v2.21.0 · Aug 2023
· source
· release history
+Service dependency visualizationshippedProvides a command to visualize the dependency graph of services within a Compose project.1 release · first seen May 2023▸
Also counts toward: Command-line interface
release
New docker compose viz subcommand for visualizing service dependencies.
v2.18.0 · May 2023
· source
· release history
+Stack dependency pushshippedPushes a stack and all its dependencies with a single command.1 other source · first seen Dec 2022▸
example
Push a stack and all its dependencies with a single command$ docker compose push --include-deps
v2.14.1 · Dec 2022
· source
+Interactive run command TTY supportshippedAllows attaching a pseudo-TTY to an interactive `run` command.1 other source · first seen Mar 2022▸
example
Attach a pseudo-TTY to an interactive run command.$ docker compose run -i -t service-name /bin/bash
v2.3.0 · Mar 2022
· source
+Image listing for created containersshippedLists images of containers that have been created but not yet started.1 release · first seen Jan 2022▸
release
compose images now lists images of containers that have been created but not yet started
v2.2.3 · Jan 2022
· source
· release history
+Configuration output control (config command)shippedAllows directing the configuration output to a file instead of stdout.1 release · first seen Sep 2021▸
previously: Configurable output redirection for config command
Also counts toward: Command-line interface
release
compose config --output flag added to redirect configuration output to a file instead of stdout.
v2.0.0 · Sep 2021
· source
· release history
+Build context compressionshippedAllows compressing the Docker build context during the image build phase to optimize transmission.1 release · first seen Apr 2018▸
Also counts toward: Command-line interface
release
docker-compose build now supports the --compress flag to compress the build context.
1.21.0 · Apr 2018
· source
· release history
+Project path resolutionshippedAllows running commands from a specific directory without changing the current working directory via the --project-directory flag.1 release · first seen Apr 2017▸
Also counts toward: Command-line interface
release
Added --project-directory PATH option to docker-compose that will affect path resolution for the project
1.12.0 · Apr 2017
· source
· release history
+Entry point overridingshippedAllows setting an entry point on a service to override the default command set on the image.1 release · first seen Jul 2016▸
release
Setting entrypoint on a service empties out any default command set on the image (i.e. CMD) to match docker run --entrypoint behavior
1.8.0 · Jul 2016
· source
· release history
+Swarm compatibilityshippedImproves interoperability with Docker Swarm by restricting container affinity constraints to anonymous volumes only.1 release · first seen Feb 2016▸
release
Improves compatibility with Swarm by limiting container affinity to anonymous volumes only
1.6.1 · Feb 2016
· source
· release history
+Project name configurationshippedAllows explicitly setting the project name via a configuration option instead of relying on automatic or directory-based defaults.1 release · first seen May 2014▸
release
Adds name configuration option to make the project name configurable
0.4.1 · May 2014
· source
· release history
Lines in monospace are the tool's own words: help text
parsed from its source, or an endpoint from its API document. Under
release, a line is our summary of a dated release. Under
docs, it is quoted from the tool's own documentation or
website. Each links back to the source it came from.
Command line
View
Source
No command matches.
load a captured run
composed command
No matchesTry a different search, or clear a filter to see more.
option surface across analysed releases
options at that releaseadded, per releaseremoved, per release
option
found in
since
description
No matchesTry a different search, or clear a filter to see more.
option changes per release — drag across the rail to set a range
→
Values are placeholders taken from each option’s declared default.
Nothing is executed here — the output shown is a recording of a run
that already happened.
Score card
Shipping velocityreleases a month, last 12 months
Documentation qualityrelease-notes rubric, 0–100
Breaking-change disciplinehow rarely a release breaks users, and notice given
Maintenance riskquiet time against its own cadence, maintainers
Innovation & surfacenew capabilities, API and MCP surface
Community health
Contributor trenddistinct committers, this year against last
Maintainer concentrationbus factor now against a year ago
Issue backlog trendissues closed per issue opened, 12 months
Responsivenessmedian time to a maintainer’s first reply
Nine scores for Docker Compose, each built from the releases, notes and API history this site tracks — and, on Researcher and Business, where it stands among every measured tool in its category and how that has moved.
Each score is 0–100 on a published rubric, derived from data this site already shows.
A dimension we cannot measure says so — it is never scored 0 and never enters a rank.
How this is scored
Shipping velocity — releases a month over the last 12 months, on a log scale where 16 a month scores 100. Needs 3 releases in the window.
Documentation quality — the release-notes rubric published on the analytics page, unchanged.
Breaking-change discipline — the share of releases carrying a breaking change (none scores 100, half or more scores 0). Only projects that label breaking changes are measured: a clean record cannot be told from an unlabelled one.
Maintenance risk — quiet time measured against the tool's own release cadence (quiet longer than 90 days and three typical gaps scores 0), plus the number of active maintainers and whether contributors are growing, where known. Higher is lower risk.
Innovation & surface — new capabilities in the feature ledger this year, API and MCP operations added, and the share of commits that are features: the mean of whichever we hold.
Community health (open-source tools only) — each is a direction, not a size: contributors this year against last, the bus factor now against a year ago, and issues closed per issue opened, where steady scores 50, doubled 100 and halved 0; plus the median time to a maintainer's first reply (an hour scores about 100, a month or more 0). A commercial card has no repository and carries none of the four.
Documented delivery (commercial tools) — when a vendor's documented new capabilities have slowed against its own baseline, that counts against the overall standing as heavily as two low dimensions. Steady delivery, or too little history to judge, leaves the standing alone; it is never a sixth score.
Open-source tools are scored on repository signals; commercial tools on their published changelog. Ranks compare tools within one category and one profile and need at least five measured peers; the overall standing needs three ranked dimensions. Best-in-breed or consolidator is a shape, not a quality, and is never scored.
Release-note detail over time
See how much detail Docker Compose puts in its release notes, quarter by quarter, and compare it with tracked tools in the same category. This history uses up to ten retained, reviewed notes per tool; sparse or blank older quarters may reflect that limit.
Issue, contributor and maintainer activity in docker/compose, 2023-10 – 2026-09,
as of 2026-09-25. Twelve-month figures first; the trend lines run
the whole window.
Contributors69+19 vs prior 12 months
Maintainers3+2 joined · −2 left, last 12 months
Bus factor2committers behind half the commits
Community-filed97%of issues opened, last 12 months
Median time to close4.6 daysfirst maintainer reply 3 days
Open backlog59of 8,397 issues ever filed
Issues opened / month9 · 0communitymaintainers
Open backlog59
Contributors / month7
Commits / month88
Stars38,172
Issue themes, last 12 months
bugs 62%
features 20%
questions 4%
docs 0%
other 14%
Counts from the project's public repository and git history; no individuals
are identified. Maintainers are the committers covering 80% of the last year's
commits. how we measure this
Articles
2 articles
· updated Nov 4, 2026
Where Docker Compose turns up in what others publish: how-tos, attack reports that
name it, and incident write-ups. A row says why it is here and quotes where the
article names it; the link goes to the publisher.
Command Description docker compose ps List running project containers docker compose ps -a List all project containers, including stopped docker compose logs Show logs for all services docker compose logs -f service…
2 more quotes
Command Description docker compose build Build all service images docker compose build service Build one service image docker compose build --no-cache Build without layer cache docker compose pull Pull service images…
Syntax Description docker compose -f compose.prod.yaml up -d Use a specific file docker compose -f base.yml -f override.yml up -d Merge files; later files can add, merge, or override values docker compose -p myproject…
Figure 2: Docker Compose container topology showing all services, volumes, networks, and inter-container communication paths.
2 more quotes
The AIRFLOW__DATABASE__SQL_ALCHEMY_CONN points to the PostgreSQL container using the service name postgres as the hostname — Docker Compose automatically creates a network where services can reach each other by name.
Stopping the System To stop all containers, press Ctrl+C in the terminal where docker compose up is running.
Libraries its release ships
What its latest release locks, checked against known advisories.
None of its release's images build from a lockfile we can read.
Add the badge to your README
Maintain this project? The badge links readers straight to this page, so they can
follow every release here.