Dockerfile中的Git clone repo滞后

时间:2016-10-19 18:41:57

标签: git docker dockerfile

我试图将bitbucket托管的私有仓库克隆到docker容器中。我的Dockerfile如下

RUN git clone git@deploy:<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 .

我遇到的问题:我说标签v1.1.2不存在。为了确认这一点,我用

更改了Dockerfile
RUN git clone git@deploy:<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 .

我可以看到最后创建的分支和最后一个标记现在已经克隆了。我找到的解决方法是进行双重拉

RUN git clone git@deploy:<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 .

现在一切都很好。

1 个答案:

答案 0 :(得分:0)

试试这个:

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

WORKDIR /src/<blabla>

Git clone可以直接获取标记,添加--single-branch--depth可以避免将整个存储库历史记录克隆到容器中。

它更紧凑,避免了额外的图层。你仍然可以把它分成你想要的多行。