도커에서 나는 이것을하고 싶다 :
git clone XYZ
cd XYZ
make XYZ
그러나 cd 명령이 없기 때문에 매번 전체 경로를 전달해야합니다 (XYZ / fullpath 작성). 이것에 대한 좋은 해결책이 있습니까?
답변
스크립트 또는 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을 병합 (파일이 안정된 경우)하는 것이 매우 클 수 있습니다 유용한 일.
답변
다른 디렉토리로 변경하려면 WORKDIR을 사용하십시오 . WORKDIR 이후의 모든 RUN, CMD 및 ENTRYPOINT 명령은 해당 디렉토리에서 실행됩니다.
RUN git clone XYZ
WORKDIR "/XYZ"
RUN make
답변
RUN git clone http://username:password@url/example.git
WORKDIR /folder
RUN make