Learn how to use profiles in Docker Compose
With profiles you can define a set of active profiles so your Compose application model is adjusted for various usages and environments.
The services top-level element supports a profiles attribute to define a list of named profiles.
Services without a profiles attribute are always enabled.
A service is ignored by Compose when none of the listed profiles match the active ones, unless the service is
explicitly targeted by a command. In that case its profile is added to the set of active profiles.
NoteAll other top-level elements are not affected by
profilesand are always active.
References to other services (by links, extends or shared resource syntax service:xxx) do not
automatically enable a component that would otherwise have been ignored by active profiles. Instead
Compose returns an error.
Illustrative example
services:
web:
image: web_image
test_lib:
image: test_lib_image
profiles:
- test
coverage_lib:
image: coverage_lib_image
depends_on:
- test_lib
profiles:
- test
debug_lib:
image: debug_lib_image
depends_on:
- test_lib
profiles:
- debugIn the above example:
- If the Compose application model is parsed when no profile is enabled, it only contains the
webservice. - If the profile
testis enabled, the model contains the servicestest_libandcoverage_lib, and serviceweb, which is always enabled. - If the profile
debugis enabled, the model contains bothwebanddebug_libservices, but nottest_libandcoverage_lib, and as such the model is invalid regarding thedepends_onconstraint ofdebug_lib. - If the profiles
debugandtestare enabled, the model contains all services;web,test_lib,coverage_libanddebug_lib. - If Compose is executed with
test_libas the explicit service to run,test_liband thetestprofile are active even iftestprofile is not enabled. - If Compose is executed with
coverage_libas the explicit service to run, the servicecoverage_liband the profiletestare active andtest_libis pulled in by thedepends_onconstraint. - If Compose is executed with
debug_libas the explicit service to run, again the model is invalid regarding thedepends_onconstraint ofdebug_lib, sincedebug_libandtest_libhave no commonprofileslisted. - If Compose is executed with
debug_libas the explicit service to run and profiletestis enabled, profiledebugis automatically enabled and servicetest_libis pulled in as a dependency starting both servicesdebug_libandtest_lib.
Learn how to use profiles in
Docker Compose.