mirror of https://github.com/docker/docs.git
66 lines
2.7 KiB
Markdown
66 lines
2.7 KiB
Markdown
---
|
|
title: Profiles
|
|
description: Learn about profiles
|
|
keywords: compose, compose specification, profiles, compose file reference
|
|
---
|
|
|
|
With profiles you can define a set of active profiles so your Compose application model is adjusted for various usages and environments.
|
|
The exact mechanism is implementation specific and may include command line flags, environment variables, etc.
|
|
|
|
The [services](05-services.md) 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.
|
|
|
|
> **Note**
|
|
>
|
|
> All other top-level elements are not affected by `profiles` and 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
|
|
|
|
```yaml
|
|
services:
|
|
foo:
|
|
image: foo
|
|
bar:
|
|
image: bar
|
|
profiles:
|
|
- test
|
|
baz:
|
|
image: baz
|
|
depends_on:
|
|
- bar
|
|
profiles:
|
|
- test
|
|
zot:
|
|
image: zot
|
|
depends_on:
|
|
- bar
|
|
profiles:
|
|
- debug
|
|
```
|
|
|
|
In the above example:
|
|
|
|
- If the Compose application model is parsed with no profile enabled, it only contains the `foo` service.
|
|
- If the profile `test` is enabled, the model contains the services `bar` and `baz`, and service `foo`, which is always enabled.
|
|
- If the profile `debug` is enabled, the model contains both `foo` and `zot` services, but not `bar` and `baz`,
|
|
and as such the model is invalid regarding the `depends_on` constraint of `zot`.
|
|
- If the profiles `debug` and `test` are enabled, the model contains all services; `foo`, `bar`, `baz` and `zot`.
|
|
- If Compose is executed with `bar` as the explicit service to run, `bar` and the `test` profile
|
|
are active even if `test` profile is not enabled.
|
|
- If Compose is executed with `baz` as the explicit service to run, the service `baz` and the
|
|
profile `test` are active and `bar` is pulled in by the `depends_on` constraint.
|
|
- If Compose is executed with `zot` as the explicit service to run, again the model is
|
|
invalid regarding the `depends_on` constraint of `zot`, since `zot` and `bar` have no common `profiles`
|
|
listed.
|
|
- If Compose is executed with `zot` as the explicit service to run and profile `test` is enabled,
|
|
profile `debug` is automatically enabled and service `bar` is pulled in as a dependency starting both
|
|
services `zot` and `bar`.
|
|
|
|
See how you can use `profiles` in [Docker Compose](../profiles.md). |