Comme illustré par le numéro 684 , export
ne persistera pas sur les images. (N'oubliez pas que chaque directive Dockerfile générera un conteneur intermédiaire, engagé dans une image intermédiaire: cette image ne conservera pas la valeur exportée)
ENV
:
Les variables d'environnement définies à l'aide de ENV
persisteront lorsqu'un conteneur est exécuté à partir de l'image résultante.
Vous pouvez afficher les valeurs à l'aide de docker inspect
et les modifier à l'aide de docker run --env <key>=<value>
.
Le problème illustrait cela avec:
RUN export PATH=$PATH:/foo/bar # from directly in builder
Quand je fais docker run [img] bash -c 'echo $PATH'
ça n'inclut jamais /foo/bar
.
Essayez-le
Créez un nouveau fichier docker contenant:
FROM centos:6
ENV FOO=foofoo
RUN export BAR=barbar
RUN export BAZ=bazbaz && echo "$FOO $BAR $BAZ"
Puis construisez-le. Le résultat de la dernière étape est:
Step 4/4 : RUN export BAZ=bazbaz && echo "$FOO $BAR $BAZ"
---> Running in eb66196b238d
foofoo bazbaz
Tu peux voir:
FOO
persiste à travers les conteneurs intermédiaires, grâce au ENV
mot - clé;
BAR
ne persiste pas à l'étape suivante, à cause de la export
commande;
BAZ
s'affiche correctement car la variable est utilisée sur le même conteneur.
docker
par exemple,run
avec--env-file
ou--env
exportera ces variables (par ces arguments d'option)? Désolé de se heurter à une si vieille réponse, mais une recherche sur le Web vient de m'en parler. Belle réponse btw.