2016-04-03 31 views
21

Ben docker için yeniyim. Dockerfile'da ENV komutunu kullanarak ortam değişkenlerini ayarlayabildiğimizi öğrendim. Fakat Dockerfile'daki uzun komutlar için bir bash takma adı nasıl ayarlanır?Dockerfile'da docker kapsayıcıları için bash takma adları nasıl ayarlanır?

+0

adlar esasen * çok * uzun zaman için kullanımdan kaldırıldı kabul edilmiştir. Bir fonksiyon kullan. Artık * bir takma ad kullanmanıza gerek yok. 80'lerin sonlarından bu yaklaşımlar nasıl uzun sürüyor? –

cevap

38

Temelde her zaman sizin gibi ekleyerek, do kullanıcının .bashrc:

FROM foo 
RUN echo 'alias hi="echo hello"' >> ~/.bashrc 

bu tek interaktif kabukları için çalışacaktır zamanki gibi: oluşturmalısınız etkileşimli olmayan gövdeler için

docker build -t test . 
docker run -it --rm --entrypoint /bin/bash test hi 
/bin/bash: hi: No such file or directory 
docker run -it --rm test bash 
$ hi 
hello 

küçük bir betik ve yolunuza koyun, yani:

RUN echo -e '#!/bin/bash\necho hello' > /usr/bin/hi && \ 
    chmod +x /usr/bin/hi 

Takma adınız bize aitse es parametreleri (ör. hi Jim ->hello Jim), sadece "[email protected]" ekleyin:

RUN echo -e '#!/bin/bash\necho hello "[email protected]"' > /usr/bin/hi && \ 
    chmod +x /usr/bin/hi 
+0

Bunun için teşekkürler, etkileşimli olmayan bir kabuk örneği verebilir misiniz? Bu – c24b

+3

Bash takma adını çözmek için ENTRYPOINT ve CMD'yi arıyordum sadece etkileşimli kabuklarda çalışıyor. Sadece küçük bir kabuk betiği oluşturun ve yolunuza bir takma ad olarak aynı etkiyi koyun. Cevabı basit bir örnekle güncelledik. –

+0

Not: https://stackoverflow.com/a/8467449 adresinden daha tutarlı davranış sağlamak için * echo * yerine ** printf ** 'i kullanmalısınız. Yani Printf '#!/Bin/bash \ Necho merhaba'>/usr/bin/hi chmod + x/usr/bin/hi – barraq

-1

Sen girişnoktası kullanabilirsiniz, ancak bu sizin Dockerfile içinde, takma ad için çalışmaz:

ADD dev/entrypoint.sh /opt/entrypoint.sh 
ENTRYPOINT ["/opt/entrypoint.sh"] 

Sizin entrypoint.sh

#!/bin/bash 
set -e 

function dev_run() 
{ 

} 

export -f dev_run 

exec "[email protected]" 

(Hızlı kopyalama/yapıştır, üzgünüm)

+0

Bazı Docker görüntüsünün varsayılan giriş noktasını (phusion temel görüntüsü gibi) geçersiz kılabileceğine dikkat edin. –

2

varolan komut bir takma ad oluşturmak için de ln -s kullanabilirsiniz:

ln -s $(which <existing_command>) /usr/bin/<my_command>