使用 AWS CodeBuild 进行 docker 推送失败,退出状态为 1

2023-12-25

我创建了由 CodePipeline 触发的 CodeBuild 项目,并且“docker Push”步骤始终失败,并显示“原因:退出状态 1”错误消息

以下是我的构建日志(将我的组织 ID 替换为 ):

[Container] 2021/06/12 14:39:47 Entering phase INSTALL
[Container] 2021/06/12 14:39:47 Phase complete: INSTALL State: SUCCEEDED
[Container] 2021/06/12 14:39:47 Phase context status code:  Message: 
[Container] 2021/06/12 14:39:47 Entering phase PRE_BUILD
[Container] 2021/06/12 14:39:47 Running command echo Logging in to Amazon ECR...
Logging in to Amazon ECR...

[Container] 2021/06/12 14:39:47 Running command aws ecr get-login-password --region eu-west-2 | docker login --username AWS --password-stdin <MY_ORG_ID>.dkr.ecr.eu-west-2.amazonaws.com
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded

[Container] 2021/06/12 14:39:51 Running command docker push <MY_ORG_ID>.dkr.ecr.eu-west-2.amazonaws.com/reponame/core-service:latest
The push refers to repository [<MY_ORG_ID>.dkr.ecr.eu-west-2.amazonaws.com/reponame/core-service]
An image does not exist locally with the tag: <MY_ORG_ID>.dkr.ecr.eu-west-2.amazonaws.com/reponame/core-service

[Container] 2021/06/12 14:39:51 Command did not exit successfully docker push <MY_ORG_ID>.dkr.ecr.eu-west-2.amazonaws.com/reponame/core-service:latest exit status 1
[Container] 2021/06/12 14:39:51 Phase complete: PRE_BUILD State: FAILED
[Container] 2021/06/12 14:39:51 Phase context status code: COMMAND_EXECUTION_ERROR Message: Error while executing command: docker push <MY_ORG_ID>.dkr.ecr.eu-west-2.amazonaws.com/reponame/core-service:latest. Reason: exit status 1

这是我的 buildspec.yaml:

version: 0.2

env:
  git-credential-helper: yes
phases:
  pre_build:
    commands:
      - echo Logging in to Amazon ECR...
      - aws ecr get-login-password --region eu-west-2 | docker login --username AWS --password-stdin <MY_ORG_ID>.dkr.ecr.eu-west-2.amazonaws.com
  build:
    commands:
     - echo Pushing Docker image <MY_ORG_ID>.dkr.ecr.eu-west-2.amazonaws.com/reponame/core-service:latest
    - DOCKER_REPO=<MY_ORG_ID>.dkr.ecr.eu-west-2.amazonaws.com
    - IMAGE_TAG=${DOCKER_REPO}/reponame/core-service:${EKS_CLUSTER_NAME}-${CODEBUILD_RESOLVED_SOURCE_VERSION}-v${CODEBUILD_BUILD_NUMBER}
    - echo Set IMAGE TAG = $IMAGE_TAG
    - docker build --build-arg NODE_ENV=production --build-arg DOCKER_REPO=${DOCKER_REPO} -t $IMAGE_TAG core-service/.
  - docker push $IMAGE_TAG   

正如许多参考文献指出的那样,我已将此语句添加到附加到相应 AWS CodeBuild 服务角色的策略中,但它仍然不起作用。

{
  "Statement": [
    ### BEGIN ADDING STATEMENT HERE ###
    {
      "Action": [
        "ecr:BatchCheckLayerAvailability",
        "ecr:CompleteLayerUpload",
        "ecr:GetAuthorizationToken",
        "ecr:InitiateLayerUpload",
        "ecr:PutImage",
        "ecr:UploadLayerPart"
      ],
      "Resource": "*",
      "Effect": "Allow"
    },
    ### END ADDING STATEMENT HERE ###
    ...
  ],
  "Version": "2012-10-17"
}

我可以手动运行这些步骤,但它总是在 CodeBuild 上给出此错误。

请,如果您能提供帮助,那里有类似的线程,但没有人可以具体解释这一问题的解决方案。谢谢。


从错误消息中可以看出,尝试使用此标签推送图像会引发错误:

<MY_ORG_ID>.dkr.ecr.eu-west-2.amazonaws.com/reponame/core-service:latest

发生这种情况是因为我的存储库中已经存在图像标签“最新”。

通过多次运行相同的 docker Push 命令,我发现 CodeBuild 有时会打印完整的错误消息,有时则不会。推送唯一的图像名称标签解决了这个问题:

<MY_ORG_ID>.dkr.ecr.eu-west-2.amazonaws.com/reponame/core-service:${CODEBUILD_RESOLVED_SOURCE_VERSION}-v${CODEBUILD_BUILD_NUMBER}

权限和身份验证一切都很好。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 AWS CodeBuild 进行 docker 推送失败,退出状态为 1 的相关文章

随机推荐

  • 如果父进程退出,如何防止子进程不成为僵尸进程

    我的主进程生成一个子进程 如果主进程被杀死 子进程将被分配 ppid 为 1 当子进程退出时 它将成为僵尸进程 因为 init 尚未对该子进程调用 wait 有没有办法避免这种情况呢 init will call wait 在它继承的进程上
  • 如何在ubuntu下使用adb USB连接android设备[关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 其他人可能在 ubuntu linux 下遇到了 adb 调试问题 症状是 USB 连接的 Android 设备的可用性 例如与日食 你可以
  • 组合框数据绑定错误 - 如果以编程方式失去焦点,则不会写入值

    我有一个空白表单 我在其中添加了默认值ComboBox TextBox 仅用于接收焦点 以及Label 组合框具有设置为表单上的私有属性的数据绑定 Setup Private Sub FormLoad sender As System Ob
  • @RequestBody 在发出 POST 请求时给出空 JsonObject

    我有以下方法 RequestMapping value app write method RequestMethod POST consumes application json produces application json publ
  • 如何添加用户脚本js文件作为Chrome扩展?

    我目前一直在为 Chrome 开发用户脚本 这些脚本可以在不使用 Tampermonkey 的情况下运行 今天我在 Chrome 扩展中添加了一个第三方扩展 userscript js UserScript name job changer
  • 如何让 python 程序运行而不是在记事本中打开?

    我在打开 py 文件时遇到一些问题 我有一个程序调用这个 py 文件 即路径名 example py file txt 但它不是运行 python 程序 而是在记事本中打开它 我如何让它运行 程序本身接收一个文件 并创建一个更可读的输出 编
  • 未找到框架 Protobuf

    I am facing an issue wherein I needed to use FirebaseRemoteConfig for my iOS app I included the following pod pod Fireba
  • 具有自己的文件偏移量的重复文件描述符

    如何从现有文件描述符创建新文件描述符 使得新描述符不共享文件表中相同的内部文件结构 条目 具体来说 诸如文件偏移量 最好是权限 共享和模式 之类的属性不应在新旧文件描述符之间共享 在 Windows 和 Linux 下 dup 将复制文件描
  • mingw 3.4.5 缺少 dlfcn.h?

    难道是我的mingw 3 4 5安装有问题 还是其他一些图书馆提供了这个 如果您想知道 dlfcn h 是定义 dlopen 和 dlclose 等内容的地方 所以它应该是相当标准的 dlfcn win32 http code google
  • Sonata Admin (2.3) 中的嵌套集合字段

    我在创建用于创建课程的表单时遇到问题 这是我的数据库方案的一部分 我正在尝试为其创建一个表单 所以我想做的是创建一个课程 我可以在其中创建会话和附加到该会话的日期 时刻 它应该看起来像这样 In my 课程管理我有的课 protected
  • 从子 textInputEditText 获取父 textInputlayout

    我正在实现一个功能来更改大小写textInputlayout提示文本为大写当提示浮起时 反之亦然 为此我正在使用OnFocusChangeListener在它的孩子身上textInputEditText 为了使其易于实施 我正在实施View
  • 删除java中的符号链接

    是否有任何 api 可用于使用 java util Date 删除符号链接 Files delete Path 不起作用 请发表您的建议 Files delete Path 在符号链接上完美运行 您的代码中应该还有其他问题 此代码示例有效
  • 如何在 C# 中保存文件和在数据库中插入记录之间创建 Transactionscope

    我有一个问题 保存文件并在 TransactionScope 的数据库中插入记录 表示保存文件和插入记录 必须一起依赖 或两者或两者都不依赖 有人可以帮我吗 事务性 NTFS 最酷的部分之一 事务性 NTFS 是它可以工作 与大量其他 交易
  • JavaScript继承框架

    是否有一个小型 轻量级的 JavaScript 类继承解决方案 可以在客户端和服务器端 node js 上正常工作 我不需要一个大的库 只是需要一个允许我声明构造函数和一些方法 然后让类能够继承它的库 John Resig 用大约 25 行
  • React Router 显示所有路由的一个组件(标头)

    有一个关于 React 路由器的问题 我有一个标题项目 我想为所有路线显示该标题项目 当然 我希望它成为 的一部分 以便用户可以单击导航中的项目 目前我有我的
  • Go 练习之旅 #18:切片、索引超出范围

    我正在完成围棋之旅中的练习 但遇到了一个我无法解决的障碍 我正在做Exercise Slices https tour golang org moretypes 18我收到此错误 256 x 256 panic runtime error
  • 具有多个文本字段输入视图的多个选择器视图 Swift

    我一直在论坛中进行搜索 但没有任何帮助 我在一个视图控制器中使用 4 个文本字段 对于每个文本字段 我使用一个单独的 pickerView 作为文本字段 4pickers 的 inputView 当我单击第一个文本字段时 pickerVie
  • 使用 GraalVM 构建本机应用程序时缺少 cl.exe

    我正在尝试使用 GraalVM 和本机映像构建本机应用程序 启动构建过程时发生错误 类路径中似乎缺少 cl exe 正如 GraalVM 网站上提到的 我已经安装了 GRMSDKX EN DVD iso 适用于 Windows 7 和 NE
  • Arrayformula 在谷歌表格中使用 countif 来计算当前行之前的重复项[重复]

    这个问题在这里已经有答案了 我只需要计算当前行之前的重复项 我需要它位于数组公式中 因为我需要它在添加新行时自动扩展 在 Excel 中 我会使用一个带有类似以下函数的表 COUNTIF A 2 A2 B2 gt 在单元格 C2 中 在单元
  • 使用 AWS CodeBuild 进行 docker 推送失败,退出状态为 1

    我创建了由 CodePipeline 触发的 CodeBuild 项目 并且 docker Push 步骤始终失败 并显示 原因 退出状态 1 错误消息 以下是我的构建日志 将我的组织 ID 替换为 Container 2021 06 12