Comment utiliser les profils de service pour simplifier les piles dans Docker Compose - CloudSavvy IT
Agence web » Actualités du digital » Comment utiliser les profils de service pour simplifier les piles dans Docker Compose –

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 précédemment concentré sur la définition d’une pile unique qui est une distribution canonique de votre application. Les profils ajoutent plus d’espace pour personnaliser les parties de la pile à utiliser, rendant les ensembles complexes de services plus modulaires et configurables.

Pourquoi utiliser des profils ?

L’utilisation de 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 de Docker Compose. Vous pouvez avoir des services que vous souhaitez uniquement utiliser dans le 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 diviser vos définitions de service sur plusieurs fichiers. Vous auriez alors besoin d’un lourd up commande pour tout démarrer en développement :

# docker-compose.yml
version: "3"
services:
  app:
    image: my-app:latest
 
# docker-compose-dev.yml
version: "3"
services:
  debug:
    image: my-app-debug:latest
# start in production
docker-compose up -d

# start in development
docker-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 de fichiers. Cela crée une expérience plus pratique qui est moins compliquée à documenter, à écrire et à exécuter.

Définir des profils

Les profils sont créés en définissant le 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 à votre profiles des champs. Les services qui partagent un profil sont automatiquement joints.

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

docker-compose up --profile dev

Cette commande démarrera à la fois le app et debug services du fichier Compose ci-dessus. Si tu courais docker-compose up, en omettant le --profile drapeau, seul le app le service commencerait.

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

Services sans profiles 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ébuts de profil implicites

Les profils seront toujours ignorés si vous démarrez manuellement un service en utilisant 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, courir docker-compose run debug commencerait 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
    depends_on: debug-utils
    profiles:
      - dev

Les démarrages implicites ne s’appliquent qu’aux dépendants directs du service spécifié. Si debug-utils avait aussi un depends_on, et ce service ne partageait pas 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 n’est remplie, vous devrez ajouter le --profile flag pour activer explicitement tous les profils supplémentaires requis.

Résumé

Les profils de service sont une fonctionnalité 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. Ajouter --profile semble généralement plus naturel que de fusionner plusieurs fichiers YAML.

Les profils vous permettent de créer des sous-piles dans 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 incorporent 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’ils soient 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 les 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 profiles à vos fichiers Compose pour commencer à activer les services de manière sélective.