Comme illustré par le numéro 684 , exportne 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 ENVpersisteront lorsqu'un conteneur est exécuté à partir de l'image résultante.
Vous pouvez afficher les valeurs à l'aide de docker inspectet 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:
FOOpersiste à travers les conteneurs intermédiaires, grâce au ENVmot - clé;
BARne persiste pas à l'étape suivante, à cause de la exportcommande;
BAZ s'affiche correctement car la variable est utilisée sur le même conteneur.
dockerpar exemple,runavec--env-fileou--envexportera 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.