Docker'da bunu yapmak istiyorum:
git clone XYZ
cd XYZ
make XYZ
Ancak cd komutu olmadığı için her zaman tam yoldan geçmem gerekiyor (XYZ / fullpath yap). Bunun için iyi çözümler var mı?
Docker'da bunu yapmak istiyorum:
git clone XYZ
cd XYZ
make XYZ
Ancak cd komutu olmadığı için her zaman tam yoldan geçmem gerekiyor (XYZ / fullpath yap). Bunun için iyi çözümler var mı?
Yanıtlar:
RUN için bir komut dosyası veya daha karmaşık bir parametre çalıştırabilirsiniz. Daha önce bakmak için indirdiğim bir Dockerfile'dan bir örnek:
RUN cd /opt && unzip treeio.zip && mv treeio-master treeio && \
rm -f treeio.zip && cd treeio && pip install -r requirements.pip
'&&' kullanımı nedeniyle, yalnızca önceki tüm komutlar başarılı olursa son 'pip install' komutuna ulaşır.
Aslında, her RUN yeni bir komut ve (şu anda) bir AUFS katmanı oluşturduğundan, Dockerfile'da çok fazla komutunuz varsa, sınırları kullanacaksınız, böylece RUN'ları birleştirmek (dosya kararlı olduğunda) çok yararlı bir şey.
cd
sadece RUN
komutun etkisi geçerli komut için sürer . Bir sonraki RUN
akımdan başlayacaktır WORKDIR
.
Başka bir dizine geçmek için WORKDIR kullanın . WORKDIR sonrası tüm RUN, CMD ve ENTRYPOINT komutları bu dizinden yürütülür.
RUN git clone XYZ
WORKDIR "/XYZ"
RUN make
RUN git clone http://username:password@url/example.git
WORKDIR /folder
RUN make