Czy można ustawić zmienną ENV dokowanego do wyniku polecenia? odczuwalna:Dockerfile - ustaw ENV na wynik polecenia
ENV MY_VAR whoami
chcę MY_VAR uzyskać wartość „root” lub cokolwiek WhoAmI powraca
Czy można ustawić zmienną ENV dokowanego do wyniku polecenia? odczuwalna:Dockerfile - ustaw ENV na wynik polecenia
ENV MY_VAR whoami
chcę MY_VAR uzyskać wartość „root” lub cokolwiek WhoAmI powraca
miałem ten sam problem i znaleźć sposób, aby ustawić zmienną środowiskową w wyniku czynności za pomocą polecenia Uruchom w dockerfile.
Na przykład muszę ustawić SECRET_KEY_BASE dla Rails aplikacji tylko raz, bez zmiany tak jak gdy uruchamiam:
docker run -e SECRET_KEY_BASE="$(openssl rand -hex 64)"
Zamiast tego piszę do Dockerfile ciąg jak:
RUN bash -l -c 'echo export SECRET_KEY_BASE="$(openssl rand -hex 64)" >> /etc/bash.bashrc'
i mojej env zmienna dostępna z poziomu root, nawet po zalogowaniu basha. lub mogą być
RUN /bin/bash -l -c 'echo export SECRET_KEY_BASE="$(openssl rand -hex 64)" > /etc/profile.d/docker_init.sh'
to zmienna dostępna w CMD i punkt_wejścia poleceń
Docker cache go jako warstwy i zmienić tylko wtedy, gdy przed nim zmienić niektóre ciągi.
Możesz również wypróbować different ways, aby ustawić zmienną środowiskową.
Jako dodatek do odpowiedzi DarkSideF.
Należy pamiętać, że każda linia/polecenie w pliku Dockerfile jest uruchamiana w innym kontenerze.
można zrobić coś takiego:
RUN export bleah=$(hostname -f);echo $bleah;
ten jest prowadzony w jednym pojemniku.
W tym momencie wynik polecenia może być użyty z RUN export
, ale nie można go przypisać do zmiennej ENV
.
znany problem: https://github.com/docker/docker/issues/29110
Zobacz https://stackoverflow.com/questions/33201271/parse-a-variable-with-the-result-of-a-command-in-dockerfile – akhmed