Conforme ilustrado pelo problema 684 , exportnã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)
ENVirá:
As variáveis de ambiente definidas usando ENVpersistirão quando um contêiner for executado a partir da imagem resultante.
Você pode ver os valores usando docker inspecte 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:
FOOpersiste por meio de contêineres intermediários, graças à ENVpalavra - chave;
BARnão persiste na próxima etapa, por causa do exportcomando;
BAZ é exibido corretamente porque a variável é usada no mesmo contêiner.
dockerpor exemplo,runcom--env-fileou--envexportará 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.