Include
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