2016-10-19 3 views
0

docker 컨테이너에 bitbucket에서 호스팅하는 개인 repo를 복제하려고합니다. 나는 태그 v1.1.2이 존재하지 않는다고 말했다 오전 :Dockerfile lags에있는 Git clone repo

RUN git clone [email protected]:<blabla>.git /src/<blabla> 
WORKDIR /src/<blabla> 
RUN cd /src/<blabla> 
RUN git pull --all --tags 
RUN git checkout v1.1.2 
RUN pip install . 

내가 가진 문제를 따를 때 내 Dockerfile이다. 다음 사항을 확인하기 위해, 나는 마지막으로 생성 된 지점과 마지막 태그가 이제 참으로 복제되는 것을 볼 수있는

RUN git clone [email protected]:<blabla>.git /src/<blabla> 
WORKDIR /src/<blabla> 
RUN cd /src/<blabla> 
RUN git pull --all --tags 
RUN git branch 
RUN git tag 
RUN git checkout v1.1.2 
RUN pip install . 

으로 Dockerfile을 변경합니다. 내가 찾은 해결 방법은 두 번 당기는 것입니다.

RUN git clone [email protected]:<blabla>.git /src/<blabla> 
WORKDIR /src/<blabla> 
RUN cd /src/<blabla> 
RUN git pull --all --tags 
RUN git pull --all --tags 
RUN git checkout v1.1.2 
RUN pip install . 

이제는 모든 것이 잘 작동합니다.

+0

git clone - 미러 클론 모든 브랜치와 태그는 체크 아웃 할 수 있습니다. v1.1.2 –

+0

'docker build --no-cache'도 마찬가지입니까? – wrwrwr

답변

0

이 시도 :

RUN git clone -b 'v1.1.2' --single-branch --depth 1 [email protected]:<blabla>.git /src/<blabla> \ 
    && cd /src/<blabla> \ 
    && pip install . 

WORKDIR /src/<blabla> 

힘내 복제가 직접 태그를 가져올 수 있으며, --single-branch--depth 피하기를 추가하면 컨테이너에 전체 저장소의 역사를 복제 할 수 있습니다.

조금 더 작아서 여분의 레이어를 피할 수 있습니다. 원하는대로 여러 줄로 나눌 수 있습니다.