【问题标题】:Dockerhub automated builds with multiple private reposDockerhub 自动构建多个私有仓库
【发布时间】:2015-02-10 19:09:07
【问题描述】:

在自动 dockerhub 构建期间,有没有办法连接到多个私有 git 存储库?我们正在构建 golang 应用程序,需要“获取”其他私有仓库作为我们构建的一部分,目前它们失败了,因为 docker 无法连接到它们,只有目标私有仓库。

主仓库很好,因为部署密钥是通过 Dockerhub 安装的,但任何后续私有仓库导入都会失败。

我可以看到解决此问题的一种方法是在本地构建映像,将其“docker push”到 dockerhub,然后在部署端将其拉下,这违背了 dockerhub 和自动构建系统的目的。另一种是将 ssh 密钥烘焙到基础映像中,这不是一个好主意。

有没有人解决这个问题,不涉及将 ssh 密钥烘焙到图像中或在本地构建?

非常感谢。

【问题讨论】:

标签: git github go docker dockerhub


【解决方案1】:

单个 ssh 密钥

如果您只有一个ssh-key,那么将其添加到 Docker 容器 (/root/.ssh/id_rsa) 中的 root ssh-path 应该足以成功提取您的存储库。取决于您的私人仓库在哪里,您可能应该在.ssh 中添加一些其他配置。

多个 ssh 密钥

如果你有不同的ssh-keys 我建议你为你的所有回购创建一个个人令牌。这样您就可以轻松解决问题。您应该在获取之前更新git-url:

[取自这里:https://gist.github.com/shurcooL/6927554]

git config --global url."https://${GITHUB_TOKEN}:x-oauth-basic@github.com/".insteadOf "https://github.com/"

通过此更改,您应该能够成功构建您的 docker-container。


使用vendor-工具可以帮助您解决这个问题。来自go1.5 的供应商功能可供使用。我们使用的是Glide,它只存储引用(而不是整个项目)。

【讨论】:

  • 这样安全吗?你的 ssh 密钥会被泄露吗?
  • @AleksandarJovanovic 如果有人可以访问 docker 容器,是的,潜在的攻击者可以窃取您的 ssh 密钥。这取决于您在容器和“托管”容器的主机上添加的安全层。为了减少窃取 ssh 密钥的机会,您可以在容器启动时将其删除
猜你喜欢
  • 2022-10-19
  • 2017-02-25
  • 1970-01-01
  • 2015-03-08
  • 2016-08-19
  • 1970-01-01
  • 1970-01-01
  • 2022-08-20
  • 1970-01-01
相关资源
最近更新 更多