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
profileset 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:
- debugDans 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
testest activé, le modèle contient les servicestest_libetcoverage_lib, et le serviceweb, qui est toujours activé. - Si le profil
debugest activé, le modèle contient les serviceswebetdebug_lib, mais pastest_libetcoverage_lib, et par conséquent le modèle est invalide concernant la contraintedepends_ondedebug_lib. - Si les profils
debugettestsont activés, le modèle contient tous les services ;web,test_lib,coverage_libetdebug_lib. - Si Compose est exécuté avec
test_libcomme service explicite à exécuter,test_libet le profiltestsont actifs même si le profiltestn'est pas activé. - Si Compose est exécuté avec
coverage_libcomme service explicite à exécuter, le servicecoverage_libet le profiltestsont actifs ettest_libest tiré par la contraintedepends_on. - Si Compose est exécuté avec
debug_libcomme service explicite à exécuter, encore une fois le modèle est invalide concernant la contraintedepends_ondedebug_lib, puisquedebug_libettest_libn'ont pas deprofilescommuns listés. - Si Compose est exécuté avec
debug_libcomme service explicite à exécuter et le profiltestest activé, le profildebugest automatiquement activé et le servicetest_libest tiré comme dépendance démarrant les deux servicesdebug_libettest_lib.
Voir comment vous pouvez utiliser profiles dans
Docker Compose.