Conforme ilustrado pelo problema 684 , export
não persistirá nas imagens. (Não se esqueça de que cada diretiva Dockerfile irá gerar um contêiner intermediário, confirmado em uma imagem intermediária: essa imagem não preservará o valor exportado)
ENV
irá:
As variáveis de ambiente definidas usando ENV
persistirão quando um contêiner for executado a partir da imagem resultante.
Você pode ver os valores usando docker inspect
e alterá-los usando docker run --env <key>=<value>
.
O problema estava ilustrando isso com:
RUN export PATH=$PATH:/foo/bar # from directly in builder
Quando eu faço docker run [img] bash -c 'echo $PATH'
isso nunca inclui /foo/bar
.
Tente
Crie um novo dockerfile contendo:
FROM centos:6
ENV FOO=foofoo
RUN export BAR=barbar
RUN export BAZ=bazbaz && echo "$FOO $BAR $BAZ"
Em seguida, construa. O resultado da última etapa é:
Step 4/4 : RUN export BAZ=bazbaz && echo "$FOO $BAR $BAZ"
---> Running in eb66196b238d
foofoo bazbaz
Você pode ver:
FOO
persiste por meio de contêineres intermediários, graças à ENV
palavra - chave;
BAR
não persiste na próxima etapa, por causa do export
comando;
BAZ
é exibido corretamente porque a variável é usada no mesmo contêiner.
docker
por exemplo,run
com--env-file
ou--env
exportará essas (por esses argumentos de opção) variáveis? Desculpe por esbarrar em uma resposta tão antiga, mas uma pesquisa na web acabou de me trazer isso. Boa resposta btw.