我正在尝试设置一个多阶段的docker构建,并且需要克隆我的源以进行初始的第一阶段构建步骤。
但是,git clone
需要用户名/密码,因为存储库的路径位于私有github enterpr服务器上。在正常情况下,git会提示您输入用户名/密码。但是,git clone从Dockerfile中的RUN
步骤开始,没有这样的提示,输出就是:
致命:无法读取' https://yourserver.com的用户名':没有此类设备或地址 命令' / bin / sh -c git clone https://yourserver.com/name/yourpath'返回非零代码:128
即使在docker构建步骤中指定了-ti
标志。
如何传递用户名/密码或至少提示它?我不想将它嵌入Dockerfile中。
答案 0 :(得分:3)
如果你想使用用户/密码进行git克隆,你需要做的只是
git clone https://username:password@github.com/username/repository.git
在你的情况下,它将是
RUN git clone https://username:password@github.com/username/repository.git
更好的解决方案是在没有密码的情况下创建一组私钥/公钥,并将私钥ADD
或COPY
创建到Dockerfile中。在这种情况下,您需要使用github注册公钥。那么简单的命令就足够了:
RUN git clone ssh://git@github.com/username/repository.git
<强>更新强>
我也有一个基于my answer here的想法。如果您需要使用不同的用户名/密码,可以在ARG
Dockerfile
ARG USERNAME=user
ARG PASSWORD=1234
然后使用
构建您的图像docker build --build-arg USERNAME=user --build-arg PASSWORD=1234 .`
您将至少获得一些用户输入的模拟:)