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.
cdjedynego trwa dla bieżącego RUNpolecenia. Następny RUNrozpocznie 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