从Dockerfile运行git clone提示输入用户名/密码

Mat*_*att 6 git docker

我正在尝试建立一个多阶段的docker构建,并且需要在最初的第一阶段构建步骤中克隆我的源代码。

但是,git clone由于存储库的路径在私有github enterpr服务器上,因此需要用户名/密码。在正常情况下,git会提示您输入用户名/密码。但是,从RUNDockerfile中的某个步骤启动git clone时,没有这样的提示,并且输出很简单:

致命:无法读取“ https://yourserver.com ”的用户名:无此类设备或地址命令“ / bin / sh -c git clone https://yourserver.com/name/yourpath ”返回非零码:128

即使使用-tidocker build步骤中指定的标志。如何传递用户名/密码或至少提示输入?我不希望将其嵌入Dockerfile中。

Ale*_*hin 6

如果您想使用用户名/密码进行git clone,您所需要做的就是

git clone https://username:password@github.com/username/repository.git
Run Code Online (Sandbox Code Playgroud)

在你的情况下

RUN git clone https://username:password@github.com/username/repository.git
Run Code Online (Sandbox Code Playgroud)

更好的解决方案是在Dockerfile中创建一组没有密码和/ ADDCOPY私钥的私钥/公钥。在这种情况下,您将需要向github注册公共密钥。然后,简单的命令就足够了:

RUN git clone ssh://git@github.com/username/repository.git
Run Code Online (Sandbox Code Playgroud)

更新

根据我在这里的回答,我也有个主意。如果你需要不同的用户名/密码来使用,你可以设置ARGDockerfile ARG USERNAME=user ARG PASSWORD=1234 然后用建立你的形象 docker build --build-arg USERNAME=user --build-arg PASSWORD=1234 .` 和你至少会获取用户输入的一些模拟:)

我上面发布的解决方案(现在在“ spoiler”中)并不安全。根据实际文档

警告:不建议使用构建时变量来传递诸如github密钥,用户凭据等机密。构建时变量值对于使用该docker history命令的映像的任何用户都是可见的。

  • 马特,最简单的解决方案-更改密码? (4认同)
  • 标记为 *UPDATE* 的解决方案并不安全。如[此处](https://docs.docker.com/engine/reference/builder/#arg)所述:“警告:不建议使用构建时变量来传递 github 密钥、用户凭据等机密。使用 docker History 命令,镜像的任何用户都可以看到构建时变量值。” (2认同)