2016-01-20 28 views
23

Komut sonucuna bir docker ENV değişkeni ayarlamak mümkün mü? gibi:Dockerfile - komutunu ayarlamak için ENV komutunu

ENV MY_VAR whoami 

i MY_VAR değer "root" ya da her türlü benkimim döner

+0

Bkz https://stackoverflow.com/questions/33201271/parse-a-variable-with-the-result-of-a-command-in-dockerfile – akhmed

cevap

6

Ben aynı sorunu vardı ve dockerfile içinde RUN komutunu kullanarak fonksiyonun sonucunda ortam değişkeni ayarlamak için yol buldu almak istiyorum.

RUN bash -l -c 'echo export SECRET_KEY_BASE="$(openssl rand -hex 64)" >> /etc/bash.bashrc' 

ve benim env:

docker run -e SECRET_KEY_BASE="$(openssl rand -hex 64)" 

Bunun yerine ben gibi dize Dockerfile yazma i çalıştırdığınızda

Örneğin ben olduğu gibi değiştirmeden sadece bir kez Raylar uygulama için SECRET_KEY_BASE ayarlamanız gerekir bash girişinden sonra bile, mevcut olan değişken. veya

RUN /bin/bash -l -c 'echo export SECRET_KEY_BASE="$(openssl rand -hex 64)" > /etc/profile.d/docker_init.sh' 

o zaman CMD ve EntryPoint mevcut değişken katman olarak

Docker önbellek emrettiği ve bunu önce bazı dizeleri değiştirmek yalnızca değiştirmek olabilir.

Ayrıca, ortam değişkenini ayarlamak için different ways deneyebilirsiniz.

4

DarkSideF yanıtına ek olarak.

Dockerfile'daki her satırın/komutun başka bir kapta çalıştırıldığını bilmelisiniz. Bu, tek bir kap içinde çalıştırılır

RUN export bleah=$(hostname -f);echo $bleah; 

:

Böyle bir şey yapabiliriz.