Comment rendre les variables d'environnement disponibles pour les commandes Docker RUN à partir de docker-composer?
J'ai un Dockerised demande qui je voudrais faire tourner dans les deux proxy et non-hôte proxy environnements. Je suis en train de résoudre ce problème en copiant la normale des variables d'environnement, tels que http_proxy, dans les conteneurs si et seulement si elles existent dans le pays hôte.
Je peux obtenir 90% de la sorte, il n'y en exécutant
set | grep -i _proxy=>proxies.env
dans un script de niveau supérieur, et puis d'avoir, dans mon menu fixe-composer.yml:
myserver:
build: ./myserver
env_file:
- proxies.env
Cette copie de l'hôte de l'environnement variables de remplacement, le cas échéant, dans le conteneur du serveur, et il fonctionne dans le sens que ces variables sont disponibles au conteneur moment de l'exécution, en d'autres termes par la scène que le Dockerfile CMD ou point d'entrée exécute.
Toutefois, j'ai un conteneur qui doit exécuter npm comme une étape de génération, c'est à dire à partir d'une commande EXÉCUTER dans le Dockerfile, et ces variables ne semblent pas être présent à cette scène, les mnp ne peut pas trouver le serveur proxy et se bloque. Dans d'autres œuvres, si j'ai
RUN set
dans mon Dockerfile, je ne peux pas voir les variables de procurations.env, mais si je ne
docker exec -it myserver /bin/bash
et puis exécutez le jeu, je peux tout voir de procurations.env.
Peut-on recommander une façon de faire de ces variables visibles à construire conteneur de temps, sans avoir à coder en dur, de sorte que mon menu fixe-composer.yml et Dockerfile continuera de fonctionner à la fois pour les hôtes avec les proxys et les hôtes sans proxy?
(En cours d'exécution avec centos 7, docker-composer 1.3.1 et docker 1.7.0)
source d'informationauteur Francis Norton
Vous devez vous connecter pour publier un commentaire.
Peut-être vous pouvez essayer ceci:
Avant d'appeler
RUN
ADD
l' .env fichier dans l'imagepuis préfixe de votre instruction d'EXÉCUTER:
Ce produit la sortie suivante:
Mise à jour en 2016, docker-composer 1.6.2, docker 1.10+, avec un
docker-composer.yml
de la version 2:Vous avez maintenant la
args:
sous-section de laconstruction:
de la sectionqui comprend que la possibilité très intéressante:Voir PR 2653 (Janvier 2016)
Comme un résultat, une façon d'introduire les variables de proxy sans coder en dur eux dans le
docker-compose.yml
fichier lui-même est avec cette syntaxe précise:Avant d'appeler un menu fixe-composer, vous devez vous assurer que votre proxy variables d'environnement sont définies:
Alors votre
Dockerfile
construit par ladocker-compose
processus de ramasser automatiquement le proxy de valeurs de variables, même si ledocker-compose.yml
ne comprend pas tout codé en dur des valeurs spécifiques.Peut-être vous "l'environnement" option de résoudre votre problème. Dans votre menu fixe composez le fichier ressemble à ceci:
docker-compose.yml
Dockerfile
Cet exemple correctifs YUM.