【问题标题】:Git clone repo in Dockerfile lagsDockerfile 中的 Git 克隆存储库滞后
【发布时间】:2016-10-20 02:53:22
【问题描述】:

我正在尝试将 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 .

现在一切正常。

【问题讨论】:

  • git clone --mirror 克隆所有分支和标签,比你可以 git checkout v1.1.2
  • docker build --no-cache 也会发生同样的情况吗?

标签: git docker dockerfile


【解决方案1】:

试试这个:

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 避免将整个仓库历史克隆到容器中。

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

【讨论】:

    猜你喜欢
    • 2021-02-04
    • 1970-01-01
    • 2015-06-12
    • 2013-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-29
    • 2018-03-07
    相关资源
    最近更新 更多