⚠️ Traduction non officielle - Cette documentation est une traduction communautaire non officielle de Docker.

Include

Requires: Docker Compose 2.20.0 and later

Une application Compose peut déclarer une dépendance sur une autre application Compose. Ceci est utile si :

  • Vous voulez réutiliser d'autres fichiers Compose.
  • Vous devez factoriser des parties de votre modèle d'application en fichiers Compose séparés afin qu'ils puissent être gérés séparément ou partagés avec d'autres.
  • Les équipes ont besoin de garder un fichier Compose raisonnablement complexe pour la quantité limitée de ressources qu'il doit déclarer pour son propre sous-domaine dans un déploiement plus large.

La section de niveau supérieur include est utilisée pour définir la dépendance sur une autre application Compose, ou sous-domaine. Chaque chemin listé dans la section include est chargé comme un modèle d'application Compose individuel, avec son propre répertoire de projet, afin de résoudre les chemins relatifs.

Une fois l'application Compose incluse chargée, toutes les définitions de ressources sont copiées dans le modèle d'application Compose actuel. Compose affiche un avertissement si les noms de ressources entrent en conflit et n'essaie pas de les fusionner. Pour appliquer cela, include est évalué après que le(s) fichier(s) Compose sélectionné(s) pour définir le modèle d'application Compose aient été analysés et fusionnés, afin que les conflits entre fichiers Compose soient détectés.

include s'applique récursivement donc un fichier Compose inclus qui déclare sa propre section include déclenche l'inclusion de ces autres fichiers également.

Tous les volumes, réseaux, ou autres ressources tirés du fichier Compose inclus peuvent être utilisés par l'application Compose actuelle pour les références inter-services. Par exemple :

include:
  - my-compose-include.yaml  #avec serviceB déclaré
services:
  serviceA:
    build: .
    depends_on:
      - serviceB #utiliser serviceB directement comme s'il était déclaré dans ce fichier Compose

Compose supporte aussi l'utilisation de variables interpolées avec include. Il est recommandé de spécifier les variables obligatoires. Par exemple :

include:
  -${INCLUDE_PATH:?FOO}/compose.yaml

Syntaxe courte

La syntaxe courte définit seulement des chemins vers d'autres fichiers Compose. Le fichier est chargé avec le dossier parent comme répertoire de projet, et un fichier .env optionnel qui est chargé pour définir les valeurs par défaut des variables par interpolation. L'environnement du projet local peut remplacer ces valeurs.

include:
  - ../commons/compose.yaml
  - ../another_domain/compose.yaml

services:
  webapp:
    depends_on:
      - included-service # défini par another_domain

Dans l'exemple précédent, à la fois ../commons/compose.yaml et ../another_domain/compose.yaml sont chargés comme projets Compose individuels. Les chemins relatifs dans les fichiers Compose référencés par include sont résolus relativement à leur propre chemin de fichier Compose, pas basé sur le répertoire du projet local. Les variables sont interpolées en utilisant les valeurs définies dans le fichier .env optionnel dans le même dossier et sont remplacées par l'environnement du projet local.

Syntaxe longue

La syntaxe longue offre plus de contrôle sur l'analyse du sous-projet :

include:
   - path: ../commons/compose.yaml
     project_directory: ..
     env_file: ../another/.env

path

path est requis et définit l'emplacement du/des fichier(s) Compose à analyser et inclure dans le modèle Compose local.

path peut être défini comme :

  • Une chaîne : Quand utilisant un seul fichier Compose.
  • Une liste de chaînes : Quand plusieurs fichiers Compose doivent être fusionnés ensemble pour définir le modèle Compose pour l'application locale.
include:
   - path:
       - ../commons/compose.yaml
       - ./commons-override.yaml

project_directory

project_directory définit un chemin de base pour résoudre les chemins relatifs définis dans le fichier Compose. Il prend par défaut le répertoire du fichier Compose inclus.

env_file

env_file définit un/des fichier(s) d'environnement à utiliser pour définir les valeurs par défaut lors de l'interpolation des variables dans le fichier Compose analysé. Il prend par défaut le fichier .env dans le project_directory pour le fichier Compose analysé.

env_file peut être défini soit comme une chaîne soit comme une liste de chaînes quand plusieurs fichiers d'environnement doivent être fusionnés pour définir un environnement de projet.

include:
   - path: ../another/compose.yaml
     env_file:
       - ../another/.env
       - ../another/dev.env

L'environnement du projet local a la priorité sur les valeurs définies par le fichier Compose, de sorte que le projet local peut remplacer les valeurs pour la personnalisation.

Ressources supplémentaires

Pour plus d'informations sur l'utilisation d'include, voir Travailler avec plusieurs fichiers Compose