Docker에서 디렉토리 변경 명령?


214

도커에서 나는 이것을하고 싶다 :

git clone XYZ
cd XYZ
make XYZ

그러나 cd 명령이 없기 때문에 매번 전체 경로를 전달해야합니다 (XYZ / fullpath 작성). 이것에 대한 좋은 해결책이 있습니까?



6
WORKDIR 명령도 가능한 해결 방법으로 알려져 있습니다
trcarden

1
해결책은 권장되지 않습니다. docs.docker.com/engine/userguide/eng-image/…
John John Pichler

답변:


151

스크립트 또는 RUN에 대한보다 복잡한 매개 변수를 실행할 수 있습니다. 다음은 이전에 살펴보기 위해 다운로드 한 Dockerfile의 예입니다.

RUN cd /opt && unzip treeio.zip && mv treeio-master treeio && \
    rm -f treeio.zip && cd treeio && pip install -r requirements.pip

'&&'를 사용하기 때문에 이전의 모든 명령이 성공한 경우에만 최종 'pip install'명령으로 이동합니다.

실제로 모든 RUN은 새로운 커밋 및 (현재) AUFS 레이어를 생성하므로 Dockerfile에 너무 많은 명령이 있으면 한계를 모두 사용하므로 RUN을 병합 (파일이 안정된 경우)하는 것이 매우 클 수 있습니다 유용한 일.


98
궁금한 점이 있다면 cd현재 RUN명령에 대한 유일한 효과가 지속됩니다 . 다음 RUN은 현재에서 시작됩니다 WORKDIR.
Ritchie

531

다른 디렉토리로 변경하려면 WORKDIR을 사용하십시오 . WORKDIR 이후의 모든 RUN, CMD 및 ENTRYPOINT 명령은 해당 디렉토리에서 실행됩니다.

RUN git clone XYZ 
WORKDIR "/XYZ"
RUN make


14
이 질문에 대한 더 적절한 답변이라고 생각합니다.
Juan Leni

1
이것은 다중 레이어를 생성합니다 (생각합니까?)
Sebi

이것이 정답입니다. 테스트 및 작동 확인
user1258361

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.