Français

Outils de développement · Docker exécuté vers Docker compose converter

Variables d'environnement dans Compose : -e, --env-file et interpolation

· Comment ça marche

menu fixe composer variables d'environnement

Diagramme abstrait illustrant les variables d'environnement dans compose : -e, --env-file et interpolation
Illustration vectorielle originale de ToolAcre

Il existe trois emplacements d'où une variable peut provenir dans Compose, et ils se comportent différemment. Cet article mappe -e et --env-file à leurs clés et explique ce que Compose interpole et quand.

L'application connectée avec le mot de passe ${DB_PASSWORD}, littéralement — après qu'un fichier Compose écrit à la main a remplacé une exécution Docker fonctionnelle

L'application connectée avec le mot de passe ${DB_PASSWORD}, littéralement — après qu'un fichier Compose écrit à la main a remplacé une exécution Docker fonctionnelle. Preuve : une expression d’environnement reste littérale lorsqu’elle est fournie littéralement. Reproduisez le sourcing de l’environnement avec des littéraux jetables. Associez chaque occurrence source à l'environnement et à env_file ; réserver les valeurs littérales et les limites des fichiers pour l'examen de la destination.

L'incident des variables d'environnement révèle également qu'une limite distincte de l'incident des variables d'environnement est que le tokeniser ne résout jamais l'interpolation du dollar ou les valeurs par défaut. Preuve : le tokeniser ne résout jamais l’interpolation du dollar ou les défauts. Cette contrainte de sourcing environnemental est un point d’arrêt. Inspectez l'environnement et env_file sans comportement de fabrication, puis documentez une vérification de l'hôte pour les valeurs littérales et les limites des fichiers.

-e KEY=value devient environnement : — sous forme de liste ou de carte, et sous la forme KEY uniquement qui passe par une variable hôte

-e KEY=value devient environnement : — sous forme de liste ou de carte, et sous la forme KEY uniquement qui passe par une variable hôte. Preuve : les valeurs -e forment une séquence d'environnement ordonnée et les valeurs KEY uniquement déclenchent une note. Suivez les jetons d'approvisionnement de l'environnement dans l'environnement et env_file. Séparez les valeurs ordonnées des champs de dernière valeur ; les valeurs littérales et les limites des fichiers sont en dehors de la collection.

Une limite de mécanisme de variables d'environnement associée est qu'une limite de grammaire de variables d'environnement distinctes est que les espaces et les signes égal supplémentaires survivent aux valeurs citées. Preuve : les espaces et les signes égal supplémentaires survivent aux valeurs citées. Utilisez ce fait de sourcing d'environnement pour prédire un membre ou un scalaire dans l'environnement et env_file. Vérifiez les avertissements avant de décider quoi que ce soit concernant les valeurs littérales et les limites des fichiers.

--env-file devient env_file : — un fichier lu par le conteneur, distinct du fichier .env que Compose lui-même lit

--env-file devient env_file : — un fichier lu par le conteneur, distinct du fichier .env que Compose lui-même lit. Preuve : les valeurs --env-file forment des entrées env_file et aucun fichier référencé n'est ouvert. Jugez la sérialisation de l'environnement à partir de son modèle. Citer dans environnement et env_file protège les types mais ne donne aucune preuve opérationnelle pour les valeurs littérales et les limites des fichiers.

La deuxième observation de sérialisation des variables d'environnement est Une limite de sortie distincte des variables d'environnement est que le navigateur renvoie YAML mais n'exécute pas la configuration de docker compose. Preuve : le navigateur renvoie YAML mais n'exécute pas docker compose config. Cette sortie de sourcing d’environnement sépare les paramètres du contexte indisponible. Gardez l'environnement et env_file révisables et vérifiez les valeurs littérales et les limites des fichiers indépendamment.

L'interpolation n'est pas effectuée par le convertisseur ; les expressions en dollars restent le texte de sortie littéral

L'interpolation se produit dans le fichier Compose — ${VAR} et ${VAR:-default} sont résolus par Compose avant que le conteneur ne voie quoi que ce soit. Preuve : le tokeniser ne résout jamais l’interpolation ou les défauts du dollar ; L'interpolation n'est pas effectuée par le convertisseur ; les expressions dollar restent un texte de sortie littéral. Arrêtez-vous à l’exception d’approvisionnement environnemental au lieu de deviner. Tout ajout à proximité d'un environnement et d'un env_file nécessite une raison spécifique au déploiement liée aux valeurs littérales et aux limites des fichiers.

Une autre contrainte d'exception des variables d'environnement est que pour cette section de variables d'environnement, conservez la commande originale de cette section de variables d'environnement et les avertissements pour cette section de variables d'environnement à côté de ce fichier candidat. Preuve : le référentiel ne donne aucune preuve d'exécution ou historique plus large. Conservez la commande de sourcing de l'environnement d'origine à côté des avertissements. La comparaison montre ce que contiennent l'environnement et env_file et quelles valeurs littérales et quelles décisions de limites de fichiers restent manuelles.

Exemple fonctionnel : -e POSTGRES_PASSWORD=secret -e TZ --env-file app.env — le YAML, et où chaque valeur se termine au moment de l'exécution

Exemple fonctionnel : -e POSTGRES_PASSWORD=secret -e TZ --env-file app.env — le YAML, et où chaque valeur se termine au moment de l'exécution. Créez l'exemple de sourcing d'environnement à partir de noms synthétiques. Rendre chaque environnement et élément env_file traçables sans exposer les valeurs littérales de production et les détails des limites des fichiers.

Le même exemple de variables d'environnement démontre qu'un exemple de limite de variables d'environnement distinctes est que des listes d'environnement et env_file distinctes révèlent chaque source de commande. Preuve : des listes d'environnement et env_file distinctes révèlent chaque source de commande. Le fait d'approvisionnement de l'environnement apparié doit être visible dans l'environnement et env_file. Enregistrez cette ligne et évitez les hypothèses sur les valeurs littérales et les limites des fichiers.

Le texte généré peut être inspecté localement, mais Docker doit effectuer toute résolution Compose

Vérification du résultat — docker compose config imprime le fichier entièrement résolu afin que vous puissiez voir ce que le conteneur recevra. Preuve : le navigateur renvoie YAML mais n'exécute pas docker compose config ; Le texte généré peut être inspecté localement, mais Docker doit effectuer toute résolution Compose. Traduisez la conséquence de l'approvisionnement de l'environnement en un environnement observable et une différence env_file. Docker est propriétaire des dernières valeurs littérales et du verdict sur les limites des fichiers.

L'implémentation des conséquences des variables d'environnement montre également pour cette section de variables d'environnement conserver l'original pour cette section de variables d'environnement, la commande et les avertissements à côté de cette section de variables d'environnement, ce fichier candidat, les conséquences des variables d'environnement, le fait définit quoi pour cette section de variables d'environnement, le navigateur a contribué pour cette section de variables d'environnement, docker possède toujours les variables d'environnement, conséquence du verdict d'exécution, l'opérateur de cette section de variables d'environnement possède toujours les variables d'environnement, conséquence de la politique de sécurité, le référentiel de cette section de variables d'environnement a toujours besoin des variables d'environnement, conséquence secrète supprimée, garder pour cette section de variables d'environnement, ces responsabilités sont séparées quand pour cette section de variables d'environnement décrivant le service généré. Répartir les responsabilités de sourcing de l'environnement : la conversion écrit l'environnement et le fichier env_file, le référentiel supprime les secrets et les opérateurs valident les valeurs littérales et les limites des fichiers.

Ce que cela ne couvre pas : secrets Docker, règles de citation dans les fichiers env et variables définies par le propre fichier Docker de l'image

Ce que cela ne couvre pas : les secrets Docker, les règles de citation dans les fichiers env et les variables définies par le propre Dockerfile de l'image. Preuve : les sections secrètes et les valeurs par défaut définies par l'image sont en dehors du modèle. Limitez la portée du sourcing de l'environnement aux branches environnement et env_file indiquées ici. Les formulaires et valeurs par défaut voisins ne peuvent pas répondre aux questions sur les valeurs littérales et les limites des fichiers.

Une autre limite de portée des variables d'environnement découle d'une limite de variable d'environnement distincte : les valeurs -e forment une séquence d'environnement ordonnée et les valeurs KEY uniquement déclenchent une note. Traitez cette limite d’approvisionnement environnemental comme une exclusion. Préférez un environnement précis et env_file aux suppositions sur les valeurs littérales et les limites des fichiers.

À retenir : sachez de quel fichier provient chaque variable - et le convertisseur affiche -e et --env-file atterrissant sous les bonnes touches

À retenir : sachez de quel fichier provient chaque variable - et le convertisseur affiche -e et --env-file atterrissant sous les bonnes touches. Auditer le sourcing de l'environnement en tant qu'option source, champ de modèle, ligne environnement et env_file et avertissement. Supprimez les secrets avant de vérifier les valeurs littérales et les limites des fichiers.

Enfin, la source à retenir des variables d'environnement confirme qu'une limite de décision distincte pour les variables d'environnement est que les valeurs --env-file forment des entrées env_file et qu'aucun fichier référencé n'est ouvert. Fermer le sourcing de l'environnement de manière étroite : environnement et env_file sont candidats ; les valeurs littérales, les limites des fichiers et l'équivalence du shell ne sont pas des garanties.