我正在尝试建立一个多阶段的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中。
如果您想使用用户名/密码进行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中创建一组没有密码和/ ADD或COPY私钥的私钥/公钥。在这种情况下,您将需要向github注册公共密钥。然后,简单的命令就足够了:
RUN git clone ssh://git@github.com/username/repository.git
Run Code Online (Sandbox Code Playgroud)
更新
根据我在这里的回答,我也有个主意。如果你需要不同的用户名/密码来使用,你可以设置
ARG你Dockerfile:ARG USERNAME=user ARG PASSWORD=1234然后用建立你的形象docker build --build-arg USERNAME=user --build-arg PASSWORD=1234 .`和你至少会获取用户输入的一些模拟:)
我上面发布的解决方案(现在在“ spoiler”中)并不安全。根据实际文档:
警告:不建议使用构建时变量来传递诸如github密钥,用户凭据等机密。构建时变量值对于使用该
docker history命令的映像的任何用户都是可见的。
| 归档时间: |
|
| 查看次数: |
6718 次 |
| 最近记录: |