Jak ilustruje wydanie 684 , export
nie 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 ENV
zostaną zachowane, gdy kontener zostanie uruchomiony z obrazu wynikowego.
Możesz przeglądać wartości za pomocą docker inspect
i 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ć:
FOO
utrzymuje się przez pojemniki pośrednie, dzięki ENV
słowu kluczowemu;
BAR
nie kontynuuje następnego kroku z powodu export
polecenia;
BAZ
jest wyświetlany poprawnie, ponieważ zmienna jest używana w tym samym kontenerze.
docker
np.run
Z tymi (przez te argumenty opcji) zmiennymi--env-file
czy--env
będzie je eksportować? Przepraszam, że trafiłem na tak starą odpowiedź, ale wyszukiwarka internetowa właśnie ją wskazała. Dobra odpowiedź przy okazji.