Profils
Avec les profils, vous pouvez définir un ensemble de profils actifs afin que votre modèle d'application Compose soit ajusté pour divers usages et environnements.
L'élément de niveau supérieur services supporte un attribut profiles
pour définir une liste de profils nommés. Les services sans attribut profiles
sont toujours activés.
Un service est ignoré par Compose quand aucun des profiles
listés ne correspond aux profils actifs, sauf si le service est explicitement ciblé par une commande. Dans ce cas, son profil est ajouté à l'ensemble des profils actifs.
NoteTous les autres éléments de niveau supérieur ne sont pas affectés par
profiles
et sont toujours actifs.
Les références à d'autres services (par links
, extends
ou syntaxe de ressource partagée service:xxx
) n'activent pas automatiquement un composant qui aurait sinon été ignoré par les profils actifs. Au lieu de cela, Compose retourne une erreur.
Exemple illustratif
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:
- debug
Dans l'exemple ci-dessus :
- Si le modèle d'application Compose est analysé sans profil activé, il contient seulement le service
web
. - Si le profil
test
est activé, le modèle contient les servicestest_lib
etcoverage_lib
, et le serviceweb
, qui est toujours activé. - Si le profil
debug
est activé, le modèle contient les servicesweb
etdebug_lib
, mais pastest_lib
etcoverage_lib
, et par conséquent le modèle est invalide concernant la contraintedepends_on
dedebug_lib
. - Si les profils
debug
ettest
sont activés, le modèle contient tous les services ;web
,test_lib
,coverage_lib
etdebug_lib
. - Si Compose est exécuté avec
test_lib
comme service explicite à exécuter,test_lib
et le profiltest
sont actifs même si le profiltest
n'est pas activé. - Si Compose est exécuté avec
coverage_lib
comme service explicite à exécuter, le servicecoverage_lib
et le profiltest
sont actifs ettest_lib
est tiré par la contraintedepends_on
. - Si Compose est exécuté avec
debug_lib
comme service explicite à exécuter, encore une fois le modèle est invalide concernant la contraintedepends_on
dedebug_lib
, puisquedebug_lib
ettest_lib
n'ont pas deprofiles
communs listés. - Si Compose est exécuté avec
debug_lib
comme service explicite à exécuter et le profiltest
est activé, le profildebug
est automatiquement activé et le servicetest_lib
est tiré comme dépendance démarrant les deux servicesdebug_lib
ettest_lib
.
Voir comment vous pouvez utiliser profiles
dans
Docker Compose.