无法从Docker Build中的ECR中提取

时间:2019-03-12 15:16:59

标签: docker dockerfile aws-codebuild docker-in-docker

当我尝试使用AWS CodeBuild作为Docker Build的一部分从ECR中提取图像时,遇到了证书问题。

对于上下文,我们的设置是这样

Codebuild正在调用我们编写的内部docker工具。然后,该工具将进行docker构建。 可能使此操作更容易理解的示例命令:

../codebuild-templates/ourtoolscript docker -v

“ ourtoolscript”只是一个bash脚本,它设置了一堆环境变量,并最终使用我们指定的命令调用docker run。

问题
我们正在尝试在此工具中进行docker构建。它可以在本地运行,也可以与其他不从ECR提取图像进行构建的存储库一起使用。
我们这样做是为了使所有标记逻辑以及所有内容都是该工具中的脚本,我们可以将其应用于每个存储库。因此,说仅在工具外部进行docker构建是不可接受的解决方案。

如果docker文件从ECR提取“ FROM”,它将失败并显示以下信息:

time="2019-03-12T14:48:25Z" level=error msg="Error listing credentials" error="ecr: Failed to get authorization token: MissingRegion: could not find region configuration"
Get https://URLTOECRWITHTAG: no basic auth credentials

我尝试过的事情

我所知道的

  • CodeBuild提供的凭据可以很好地进入我们的工具。因为它可以毫无问题地拉动
  • 如果它不是从ECR图像构建的,我可以很好地构建
  • docker构建方式与普通docker pull的工作方式有所不同
  • 如果我只是做一个简单的“ docker build”。在该工具之外没有构建参数。它将图像拉得很好。所以我想我在这些变量上走错了路。

其他信息
我的docker build命令(删除了一些多余的东西):

docker build --build-arg AWS_DEFAULT_REGION=$AWS_DEFAULT_REGION --build-arg AWS_CONTAINER_CREDENTIALS_RELATIVE_URI=$AWS_CONTAINER_CREDENTIALS_RELATIVE_URI --rm --build-arg REPO='xyz.dkr.ecr.xyz.amazonaws.com' -f Dockerfile .
Sending build context to Docker daemon 16.64MB

0 个答案:

没有答案