W oknie dokowanym chcę to zrobić:
git clone XYZ
cd XYZ
make XYZ
Ponieważ jednak nie ma polecenia cd, za każdym razem muszę podawać pełną ścieżkę (make XYZ / fullpath). Jakieś dobre rozwiązania tego?
W oknie dokowanym chcę to zrobić:
git clone XYZ
cd XYZ
make XYZ
Ponieważ jednak nie ma polecenia cd, za każdym razem muszę podawać pełną ścieżkę (make XYZ / fullpath). Jakieś dobre rozwiązania tego?
Odpowiedzi:
Możesz uruchomić skrypt lub bardziej złożony parametr do RUN. Oto przykład z pliku Docker, który pobrałem, aby obejrzeć wcześniej:
RUN cd /opt && unzip treeio.zip && mv treeio-master treeio && \
rm -f treeio.zip && cd treeio && pip install -r requirements.pip
Z powodu użycia „&&” dojdzie do ostatecznej komendy „pip install” tylko wtedy, gdy wszystkie poprzednie komendy się powiodły.
W rzeczywistości, ponieważ każda RUN tworzy nowe zatwierdzenie i (obecnie) warstwę AUFS, jeśli masz zbyt wiele poleceń w Dockerfile, wykorzystasz limity, więc scalenie RUN (gdy plik jest stabilny) może być bardzo przydatna rzecz do zrobienia.
cd
jedynego trwa dla bieżącego RUN
polecenia. Następny RUN
rozpocznie się od prądu WORKDIR
.
Aby przejść do innego katalogu, użyj WORKDIR . Wszystkie polecenia RUN, CMD i ENTRYPOINT po WORKDIR zostaną wykonane z tego katalogu.
RUN git clone XYZ
WORKDIR "/XYZ"
RUN make
RUN git clone http://username:password@url/example.git
WORKDIR /folder
RUN make