Gitlab Registry的凭据,以便在AWS EB Container Services上进行部署

时间:2018-07-31 14:40:59

标签: amazon-web-services docker gitlab gitlab-ci

我坚持如何设置Gitlab管道,以使Amazon Elastic Beanstalk能够提取我在Gitlab上构建并存储在Gitlab私有Docker注册表中的应用程序的映像。

这是我现在所做的工作:

我有一个Dockerrun.aws.js,它能够通过访问我的S3文件存储Gitlab私有注册表的凭据而起作用。 但是我在存储这些积分时需要使用的格式方面遇到问题,这是AWS给我的错误消息:

  

活动执行失败,原因是:来自守护程序的错误响应:Get https://registry.gitlab.com/v2/organization/app/manifests/latest:被拒绝:禁止访问
  无法拉Docker映像Registry.gitlab.com/organization/app:latest,正在重试...
  来自守护程序的错误响应:获取https://registry.gitlab.com/v2/organization/app/manifests/latest:拒绝:禁止访问
  无法提取Docker映像Registry.gitlab.com/organization/app:latest:来自守护程序的错误响应:获取https://registry.gitlab.com/v2/organization/app/manifests/latest:拒绝:禁止访问。检查快照日志以获取详细信息。 (ElasticBeanstalk :: ExternalInvocationError)
  引起原因:来自守护程序的错误响应:获取https://registry.gitlab.com/v2/segeco/organization/app/latest:拒绝:禁止访问
  无法拉Docker映像Registry.gitlab.com/organization/app:latest,正在重试...
  来自守护程序的错误响应:获取https://registry.gitlab.com/v2/organization/app/manifests/latest:拒绝:禁止访问
  无法提取Docker映像Registry.gitlab.com/organization/app:latest:来自守护程序的错误响应:获取https://registry.gitlab.com/v2/organization/app/manifests/latest:拒绝:禁止访问。检查快照日志以获取详细信息。 (执行人:: NonZeroExitStatus)

我从Gitlab生成了我的部署令牌,但是官方文档没有描述如何使用所说的部署令牌。 有没有办法在我存储在S3上的文件中使用我的部署令牌,以允许AWS EB从注册表中提取我的应用程序?

3 个答案:

答案 0 :(得分:1)

给出您的GitLab Deploy Token,使用生成的用户名和密码,并在出现提示时(或使用适当的CLI选项)将其传递给docker login registry.gitlab.com。这将使用您需要上传到S3的信息填充Docker config.json文件。您将寻找看起来像这样的部分。

"registry.gitlab.com": {
  "auth": "some_auth_token_here"
}

有关如何制作要存储在S3中的文件以便能够使用私有存储库中的图像的详细信息,请参见Configuring Docker Environments

一旦有了,请参阅Using Images from a Private Repository,了解如何使用S3存储桶和包含身份验证信息的密钥填充Authentication文件的Dockerrun.aws.json部分。

答案 1 :(得分:0)

我找到了这个问题的解决方案。 我用于JSON文件的格式错误。 该文档表明,由最新版本的Docker生成的配置文件与EB不兼容,并且该文件需要进行修改。

答案 2 :(得分:0)

在我的情况下,我必须在S3中显式命名身份验证文件.dockercfg,否则它不起作用。