5

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

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

Codebuild 正在调用我们编写的内部 docker 工具。然后,此工具正在执行 docker 构建。可以使这更容易理解的示例命令:

../codebuild-templates/ourtoolscript docker -v

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

问题
我们正在尝试在此工具中进行 docker 构建。它可以在本地工作,它也可以与其他不从 ECR 提取图像进行构建的 repo 一起使用。
我们这样做是为了标记的所有逻辑和一切都是工具中的脚本,我们可以将其应用于每个 repo。所以说只在工具之外进行 docker build 是不可接受的解决方案。

如果 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 build 的 pull 与普通的“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
4

0 回答 0