【问题标题】:How to clone git repo using Dockerfile如何使用 Dockerfile 克隆 git repo
【发布时间】:2021-11-13 04:18:36
【问题描述】:

我是 Docker 的初学者。我已经写了一个小的Dockerfile 开始。我无法使用以下Dockerfile 克隆我的仓库。

FROM mattes/hello-world-nginx
RUN apt-get update && apt-get install -y git
RUN git clone https://github.com/umairnow/LocalizableGenerator.git
VOLUME LocalizableGenerator

我不确定我做得对还是必须使用WORKDIR。我也尝试过关注,但它没有克隆 repo。

VOLUME ["/data"]
WORKDIR /LocalizableGenerator

有人可以帮忙吗?

【问题讨论】:

  • 我已经阅读并尝试过
  • 你是什么意思无法克隆我的回购 ..?究竟是什么错误..?
  • 没有收到任何错误。但是文件夹LocalizableGenerator 是空的
  • 如果没有您提供完整的Dockerfile,这有点难以猜测@

标签: git docker dockerfile


【解决方案1】:

您的git clone 确实有效:

$ docker build . -t test
...
Successfully built 5370e446d719
Successfully tagged test:latest
$ docker run -ti test /bin/bash
root@1377e0a4735d:/# cd LocalizableGenerator/
root@1377e0a4735d:/LocalizableGenerator# git log | head
commit 289a77330eefb7abaa90ca61e4226a3c29896e58
Author: Umair Aamir <umair@myworkout.no>
Date:   Tue Jan 9 13:04:16 2018 +0100

    Improved get input method. Now user can just drag drop file path or paste file path to generate translation files.

commit e3aa870362b24765095eb80d7aa7910964c010f0
Author: Umair Aamir <umair@myworkout.no>
Date:   Tue Jan 9 12:51:57 2018 +0100

root@1377e0a4735d:/LocalizableGenerator#

我不认为你想要VOLUME 指令。 VOLUME 用于将容器外部的目录挂载到容器本身。在这里,您已经拥有容器内的目录。

【讨论】:

    【解决方案2】:

    如果你不想安装git,你可以在你的Dockerfile中使用multi stage builds

    FROM alpine/git:latest
    WORKDIR /clone-workspace
    RUN git clone https://github.com/umairnow/LocalizableGenerator.git
    
    FROM mattes/hello-world-nginx
    COPY --from=0 /clone-workspace/LocalizableGenerator /path/to/file
    

    【讨论】:

    • 您能否发送解释更多关于多阶段构建的文档? 'nt FROM 命令是否从该特定图像下载所有内容?所以,如果我喜欢 FROM UBUNTU、FROM DEBIAN 等都在同一个文件中,我的图像会变得很大并且可能有很多冲突,不是吗?
    • 正如 docker multi stage builds official documentation 中提到的,每条 FROM 指令都会启动一个新的构建阶段,这里基本上你只是从前一个阶段复制工件,其他所有东西都被留下而不保存在最终图像中。 (所以你的结果图像不会很大。
    【解决方案3】:

    您可以在本地克隆 repo(从 docker 文件中),然后使用“COPY”或“ADD”指令将代码放入 Docker 映像。 它让你在没有 git 相关软件的情况下保持图像纤薄。

    【讨论】:

      猜你喜欢
      • 2021-07-16
      • 2013-11-07
      • 2012-10-08
      • 2013-08-07
      • 1970-01-01
      • 2022-11-02
      • 2013-10-31
      相关资源
      最近更新 更多