如何在docker文件中运行`git clone`?

Zha*_* Yi 4 docker dockerfile

git clone在 docker 文件中指定了一个命令,如下所示。

RUN git clone https://github.com/zhaoyi0113/test.git
Run Code Online (Sandbox Code Playgroud)

但是我在构建 docker 镜像时遇到了这个错误:

Cloning into 'test'...
fatal: could not read Username for 'https://github.com': No such device or address
Run Code Online (Sandbox Code Playgroud)

我想知道为什么它不起作用。我可以在我的主机上运行这个命令。如果我在 docker 文件中列出它,有什么不同吗?

tef*_*ozi 5

您可以将凭据作为参数传递给容器。这应该工作

FROM alpine:3.8

RUN apk update && apk upgrade && \
    apk add --no-cache bash git openssh

ARG username
ARG password

RUN git clone https://${username}:${password}@github.com/username/repository.git

ENTRYPOINT ["sleep 10"]
Run Code Online (Sandbox Code Playgroud)

但是如果您想分发该图像可能不安全

然后构建

docker build \
    --no-cache \
    -t git-app:latest \
    --build-arg username=user \
    --build-arg password=qwerty \
    .
Run Code Online (Sandbox Code Playgroud)


Zha*_* Yi 0

我知道这个问题出了什么问题。问题是因为我克隆的存储库是私有存储库,这意味着它需要凭据才能连接到 github。通过将凭据传递给容器来修复它。

  • 这样您就会将凭证泄露给任何提取此映像的人 (3认同)