GNU/Linux >> Tutoriels Linux >  >> Panels >> Docker

Comment utiliser les profils de service pour simplifier les piles dans Docker Compose

Docker Compose prend désormais en charge les profils pour une utilisation sélective des services. Services dans votre docker-compose.yml peut être lié à un ou plusieurs profils nommés. Passer un nom de profil à docker-compose up démarrera uniquement les services de ce profil, vous permettant de créer des variantes de votre pile pour des environnements et des configurations spécifiques.

Compose s'est auparavant concentré sur la définition d'une pile unique qui est une distribution canonique de votre application. Les profils ajoutent plus de place pour personnaliser les parties de la pile à utiliser, ce qui rend les ensembles complexes de services plus modulaires et configurables.

Pourquoi utiliser les profils ?

L'utilisation des profils est entièrement facultative. Vos fichiers Docker Compose existants continueront de fonctionner et il n'est pas nécessaire d'adopter des profils immédiatement.

Les profils de service résolvent plusieurs frustrations courantes avec les flux de développement et de test Docker Compose. Vous pouvez avoir des services que vous ne souhaitez utiliser qu'en développement, tels qu'un conteneur de débogage ou un service de journalisation. Lorsque vous êtes en production, vous n'avez pas besoin de ces services et vous voulez éviter de les démarrer.

Auparavant, pour y parvenir, il fallait répartir vos définitions de service sur plusieurs fichiers. Vous auriez alors besoin d'un up peu maniable commande pour tout démarrer en développement :

# docker-compose.ymlversion :"3"services :app :image :my-app:latest # docker-compose-dev.ymlversion :"3"services :debug :image :my-app-debug:latest 
# démarrer en productiondocker-compose up -d# démarrer en développementdocker-compose -f docker-compose.yml -f docker-compose-dev.yml up -d

Les profils vous permettent de combiner les deux définitions de service dans un seul fichier. Vous pouvez utiliser un indicateur ou une variable d'environnement pour sélectionner un profil spécifique, sans saisir manuellement les chemins d'accès aux fichiers. Cela crée une expérience plus pratique qui simplifie la documentation, l'écriture et l'exécution.

Définir des profils

Les profils sont créés en définissant les profiles champ sur les services dans votre docker-compose.yml . Les profils sont spécifiés sous forme de liste. Chaque service peut se voir attribuer un ou plusieurs profils.

version :"3"services :app :image :my-app:latest debug :image :my-app-debug:latest profiles :- dev

Les instances de profil sont créées implicitement à partir des noms donnés à vos profiles des champs. Les services qui partagent un profil sont automatiquement joints.

Pour démarrer les services inclus dans un profil, ajoutez le --profile indicateur pour docker-compose up :

docker-composer --profile dev

Cette commande démarrerait à la fois l'app et debug services du fichier Compose ci-dessus. Si vous avez exécuté docker-compose up , en omettant le --profile flag, uniquement l'app le service commencerait.

Vous pouvez démarrer plusieurs profils simultanément en répétant le --profile drapeau. Compose prend également en charge les COMPOSE_PROFILES variable d'environnement comme alternative à --profile . Ceci accepte une liste de noms de profils séparés par des virgules.

Services sans profiles champ sera toujours démarré, quel que soit le profil demandé. Une fois qu'un service a reçu un profil, il ne démarrera que si ce profil a été demandé. Pour les services avec plusieurs profils, demander l'un d'entre eux permettra au service de démarrer.

Démarrages implicites du profil

Les profils seront toujours ignorés si vous démarrez manuellement un service à l'aide de docker-compose run . Dans ce cas, Compose démarrera également tous les services dont dépend le service demandé, s'ils partagent un profil ou n'ont pas de profil attribué.

Ici, en exécutant docker-compose run debug lancerait le debug-utils service, même si le dev le profil n'a pas été explicitement sélectionné :

version :"3"services :app :image :my-app:latest debug-utils :image :my-app-debug-utils:latest profiles :- dev debug :image :my-app-debug:latest depend_on :profils debug-utils :- dev

Les démarrages implicites s'appliquent uniquement aux personnes à charge directes du service spécifié. Si debug-utils avait aussi un depends_on , et ce service n'a pas partagé le dev profil, il ne démarrerait pas correctement.

Pour que la résolution des dépendances fonctionne correctement avec docker-compose run , tous les services de l'arborescence doivent partager un profil du service le plus élevé ou être activés en permanence. Si aucune de ces conditions ne tient, vous devrez ajouter le --profile flag pour activer explicitement tous les profils supplémentaires requis.

Résumé

Les profils de service sont une fonction de composition pratique qui facilite la gestion de différentes combinaisons de services. En utilisant des profils, vous pouvez éviter de diviser les services en plusieurs fichiers Compose. Ajout de --profile semble généralement plus naturel que de fusionner plusieurs fichiers YAML ensemble.

Les profils vous permettent de créer des sous-piles au sein de votre application Compose principale. Leur introduction dans le cadre de la spécification Compose est une reconnaissance du fait que les piles en développement intègrent souvent des services supplémentaires au-delà de ceux utilisés en production.

Plus généralement, les profils rendent Compose plus polyvalent en facilitant la personnalisation de la pile. Bien qu'envisagés comme une approche de la gestion de l'environnement, les profils pourraient également aider la communauté à créer différentes variantes d'images populaires. Pensez à un WordPress docker-compose.yml avec mysql et mariadb profils :vous pouvez désormais basculer facilement entre les services de base de données préconfigurés pour sélectionner le moteur qui correspond à vos préférences.

Docker Compose 1.28 a introduit des profils plus tôt cette année. Tant que vous disposez d'une version récente du binaire Compose ou de Docker Desktop pour Windows et Mac, vous pouvez ajouter des profiles à vos fichiers Compose pour commencer à activer les services de manière sélective.


Docker
  1. Comment utiliser la commande Systemctl pour gérer les services Systemd

  2. Comment utiliser Docker Compose

  3. Comment utiliser un Dockerfile pour créer une image Docker

  4. Comment utiliser la commande Docker Inspect

  5. Comment configurer docker pour utiliser le proxy

Comment installer et utiliser Docker Compose sur Ubuntu 22.04

Comment installer et utiliser Docker sur Ubuntu 22.04

Qu'est-ce que Docker Compose et comment l'utiliser ?

Comment déployer des piles Docker Compose sur Kubernetes avec Kompose

Comment installer Docker Compose sur Ubuntu

Comment installer et utiliser Docker Compose sur Debian 11