Composer-在DockerFile中使用用户名和密码(不带SSH密钥)在管道上克隆Git存储库(Bitbucket)
我有一个Composer-在DockerFile中使用用户名和密码(不带SSH密钥)在管道上克隆Git存储库(Bitbucket),git,docker,composer-php,bitbucket,Git,Docker,Composer Php,Bitbucket,我有一个composer.json文件,它检查我在Docker中构建的两个私有Bitbucket存储库 "repositories": [ { "type": "vcs", "url": "git@bitbucket.org:repo/service.git" }, { "type": "vcs", "url": "git@bitbucket.org:repo/package.git" } ]
composer.json
文件,它检查我在Docker中构建的两个私有Bitbucket存储库
"repositories": [
{
"type": "vcs",
"url": "git@bitbucket.org:repo/service.git"
},
{
"type": "vcs",
"url": "git@bitbucket.org:repo/package.git"
}
]
目前,我能让它工作的唯一方法是将SSH密钥注入到映像中,以便它可以提取私有存储库。这反过来又要求我们将密钥签入SCM,这并不理想(总体来说是一种非常糟糕的做法)
参考文档,SSH密钥似乎是唯一受支持的选项-
唯一的要求是为git客户端安装SSH密钥
我希望有一种通过用户名和密码进行身份验证的方法,我可以将其与Bitbucket存储库变量一起传递,您可以保护这些变量
我还将采用其他人提出的任何其他解决方法来构建一个Docker映像,该映像运行
composer安装
,用于检查私有git存储库。我对composer不熟悉,但我可以想到一个可能对您有所帮助的选项。
使用ssh键创建一个基本映像,并将该映像存储在专用docker注册表中
然后从映像中开始每个构建,并且密钥已经在其中,这样您就不必在源代码管理中保存密钥。
此外,您甚至不必使用此映像实际上,您可以使用docker多级构建,并将密钥从基本映像复制到您想要使用的任何映像。这样,您仍然可以使用您想要的任何docker映像进行构建,并且不使用源代码管理 附加说明
bitbucket中有使用url中的用户名和密码进行身份验证的选项,如下所示。
https://username:password@bitbucket.org/username/repo.git
也许这会有用。我对composer不熟悉,但我可以想出一个可能对您有所帮助的选项。
使用ssh键创建一个基本映像,并将该映像存储在专用docker注册表中
然后从映像中开始每个构建,并且密钥已经在其中,这样您就不必在源代码管理中保存密钥。
此外,您甚至不必使用此映像实际上,您可以使用docker多级构建,并将密钥从基本映像复制到您想要使用的任何映像。这样,您仍然可以使用您想要的任何docker映像进行构建,并且不使用源代码管理 附加说明
bitbucket中有使用url中的用户名和密码进行身份验证的选项,如下所示。
https://username:password@bitbucket.org/username/repo.git
这可能很有用。无需将密钥烘焙到容器中-您可以在repo admin面板的管道中添加私钥 这个过程看起来有点像这样:
服务
和包
repos作为“访问密钥”(在这些repos的管理面板上的“访问密钥”屏幕中)是这方面的文档。无需将密钥烘焙到容器中-您可以在repo admin面板的管道中添加私钥 这个过程看起来有点像这样:
服务
和包
repos作为“访问密钥”(在这些repos的管理面板上的“访问密钥”屏幕中)是这方面的文档。这是一个理想的解决方案,我确实尝试过,但对我的用例不起作用。我认为原因在于管道本身没有调用
composer
。实际上是docker build
容器(在管道容器中)在做这项工作,它没有访问密钥的权限。我已经测试并可以直接在docker构建之外的管道上运行composer
。
这是一个理想的解决方案,我尝试过,但对我的用例不起作用。我认为原因在于管道本身没有调用composer
。实际上是docker build
容器(在管道容器中)在做这项工作,它没有访问密钥的权限。我已经测试并可以直接在docker build外部的管道上运行composer
。如果您的问题的一个答案是正确的,您应该接受它。如果您的问题的一个答案是正确的,您应该接受它。
ADD ./build_id_rsa /home/user/.ssh/id_rsa
ADD ./build_id_rsa.pub /home/user/.ssh/id_rsa.pub