2016-10-20 21 views
5

benim Dockerfile aşağıdaki RUN komutunu çalıştırıyorum Dockerfile RUN komutu çalışmıyor görüntüyü kontrol edin, tam anlamıyla "{diameter-env, h248-env, http-env, msrp-env, octcap-env, radius-env, sip-env, synchro-env, xcap-env}" adlı bir dizin görüyorum Brace genişlemesi yerine/opt/seagull altında.Bash ayracı genişleme listelenen alt dizinleri her birinin altında oluşturulacak bir "günlükleri" dizini bekliyor

Neyi yanlış yapıyorum?

+1

Tek yön bilmiyorum ya da öteki, ama 'RUN' bash altında mı koşuyor? –

+0

Çıkıyor, kabuk formunu veya exec formunu kullanıp kullanmadığınıza bağlı. Cevabımı aşağıya bakın. –

cevap

10

Bash'i kullanmadığınız için brace genişletme kullanmıyorsunuz. Eğer documentation for the RUN command bakarsak:

RUN

(kabuk şeklinde komut varsayılan olarak Linux veya cmd Windows/S/C üzerinde/bin/sh -c bir kabuk, içinde çalıştırılır)

ve ayrıca:

Not: '/ bin/sh' dışında farklı bir kabuk, kullanmak için, istenen kabuk geçen exec şeklini kullanmak için.

RUN [ "/bin/bash", "-c", "mkdir -p /opt/seagull/{diameter-env,h248-env,http-env,msrp-env,octcap-env,radius-env,sip-env,synchro-env,xcap-env}/logs" ] 
: Örneğin, RUN [ "/ bin/bash", "c", "yankı Merhaba"] için

Yani, sadece exec formu kullanın ve açıkça Bash kabuğu kullanmak için komutu değiştirmek

+0

Teşekkürler! Buna 45 dakika harcadığımı, farklı kaçan teknikleri denediğimi, varsayılan bash ayarlarını kontrol ettiğime inanamıyorum. –

+7

Bekle, ne? Kendi sorunun cevabını verdin ve bunun için kendinize teşekkür ediyorsun ...? –

+3

Evet! :) Yorucu bir gün oldu ve sonunda RTFM için kendime teşekkür etmeliydim. Ayrıca, http://stackoverflow.com/help/self-answer –

İlgili konular