Jak ilustruje wydanie 684 , exportnie będzie się pojawiać na obrazach. (Nie zapominaj, że każda dyrektywa Dockerfile wygeneruje kontener pośredni, zatwierdzony w obrazie pośrednim: ten obraz nie zachowa wyeksportowanej wartości)
ENV:
Zmienne środowiskowe ustawione przy użyciu ENVzostaną zachowane, gdy kontener zostanie uruchomiony z obrazu wynikowego.
Możesz przeglądać wartości za pomocą docker inspecti zmieniać je za pomocą docker run --env <key>=<value>.
Problem ten ilustruje:
RUN export PATH=$PATH:/foo/bar # from directly in builder
Kiedy to robię docker run [img] bash -c 'echo $PATH', nigdy nie obejmuje /foo/bar.
Spróbuj
Utwórz nowy plik dockerfile zawierający:
FROM centos:6
ENV FOO=foofoo
RUN export BAR=barbar
RUN export BAZ=bazbaz && echo "$FOO $BAR $BAZ"
Następnie zbuduj. Wynik ostatniego kroku to:
Step 4/4 : RUN export BAZ=bazbaz && echo "$FOO $BAR $BAZ"
---> Running in eb66196b238d
foofoo bazbaz
Możesz zobaczyć:
FOOutrzymuje się przez pojemniki pośrednie, dzięki ENVsłowu kluczowemu;
BARnie kontynuuje następnego kroku z powodu exportpolecenia;
BAZ jest wyświetlany poprawnie, ponieważ zmienna jest używana w tym samym kontenerze.
dockernp.runZ tymi (przez te argumenty opcji) zmiennymi--env-fileczy--envbędzie je eksportować? Przepraszam, że trafiłem na tak starą odpowiedź, ale wyszukiwarka internetowa właśnie ją wskazała. Dobra odpowiedź przy okazji.