从私有Git仓库构建Docker镜像

6

我无法从私有的Bitbucket仓库构建Docker镜像。根据Docker文档,我的Bitbucket仓库在其根目录下有一个"Dockerfile"。

docker --version

Docker version 1.3.1, build 4e9bbfa

我尝试过...

docker build --rm=true --tag="myorg/myimagename" git://bitbucket.org:myacct/myrepo.git

错误:致命错误:无法连接到bitbucket.org:bitbucket.org:ai_socktype不支持Servname

docker build --rm=true --tag="myorg/myimagename" git://git@bitbucket.org:myacct/myrepo.git

错误:致命错误:无法连接到bitbucket.org:bitbucket.org:ai_socktype不支持Servname

我正在关注的文档...

  • 我假设会使用主机机器的密钥。

当Git存储库设置为URL时,存储库将用作上下文。 Git存储库使用其子模块(git clone -recursive)进行克隆。在您的本地主机上的临时目录中发生了全新的git克隆,然后将此发送到Docker守护程序作为上下文。通过这种方式,您可以使用本地用户凭据和VPN等访问私有存储库。

https://docs.docker.com/reference/commandline/cli/#build

  • 我还假设docker将从存储库中选择Dockerfile和上下文。

这将克隆GitHub存储库并使用已克隆的存储库作为上下文。存储库根目录中的Dockerfile用作Dockerfile。请注意,您可以通过使用git://模式来指定任意的Git存储库。

https://docs.docker.com/reference/commandline/cli/#examples_1

我已经...

  • 正确设置了位于bitbucket和主机之间的ssh密钥
  • 成功通过ssh在主机上克隆了私有bitbucket存储库

如果您通过ssh访问仓库,我不认为您需要使用git://前缀。请参见https://dev59.com/D2Ag5IYBdhLWcg3wm8D7 - Anya Shenanigans
1
该问题在Dockerfile内克隆repo,并要求docker镜像内正确的密钥。或者,我将我的repo URL作为参数发送到“build”命令中。话虽如此,我尝试过没有使用git://,但是我收到了“没有这样的文件或目录”的错误提示。 - heme
1
问题似乎在于Docker并不真正支持SSH克隆(https://github.com/docker/docker/issues/2715),而且似乎已经为GitHub添加了“魔法”(https://github.com/docker/docker/pull/4364/files)。 - Anya Shenanigans
1
Petesh的第二条评论是正确答案。 - heme
1个回答

0
将 git:// 替换为 ssh:// 将解决该问题。

Petesh在上面的第二条评论提供了正确的答案。相关链接-https://github.com/docker/docker/issues/2715 - heme

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接