AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 968376
Accepted
Sreeraju V
Sreeraju V
Asked: 2019-05-23 01:06:06 +0800 CST2019-05-23 01:06:06 +0800 CST 2019-05-23 01:06:06 +0800 CST

CodePipeline 的 AWS ECS 持续部署问题

  • 772

在使用aws 官方文档中指定的 codepipeline 部署 ECS 时,两个 docker 映像正在推入 ECR。一张图片同时包含提交 ID 和最新标签,而另一张图片未标记,如下图所示。

在此处输入图像描述

在"buildspec.yml"我可以看到的文件中,docker正在推送两个图像,一个带有“最新标签”,另一个带有提交ID标签,如下所示

 - docker tag $REPOSITORY_URI:latest $REPOSITORY_URI:$IMAGE_TAG
 - COMMIT_HASH=$(echo $CODEBUILD_RESOLVED_SOURCE_VERSION | cut -c 1-7)
 - IMAGE_TAG=${COMMIT_HASH:=latest}
 - docker push $REPOSITORY_URI:latest
 - docker push $REPOSITORY_URI:$IMAGE_TAG

我的问题是

1) 在 docker push 完成后,ECR 中必须有两个图像,一个带有"commit id"标签,另一个带有“最新”标签。但是在 ECR 中,它显示的标签名称错误,请检查上面的附图。为什么一张图片显示为 untagged ?

2)当我的任务定义仅使用最新标签来构建容器时,为什么我需要推送两个带有提交 ID 和最新标签的图像。我不是必须只推送带有“最新”标签的 docker 镜像吗,为什么我需要推送带有 commit id 标签的镜像?

amazon-web-services
  • 2 2 个回答
  • 315 Views

2 个回答

  • Voted
  1. Best Answer
    MLu
    2019-05-23T02:01:09+08:002019-05-23T02:01:09+08:00

    你确定这两条线来自同一条线docker push吗?我认为发生的事情是第二行是您的前一行:latest,当您推送新行时:latest,前一行变得未标记。

    检查 CodeBuild 脚本输出以验证您确实运行了两次推送,一次:latest使用:${COMMIT_HASH}. tag此外,我相信在推送到 ECR 之前,您必须在本地使用两个修订版的图像。但是我没有检查这个...

    这就是我们所做的(我们${IMAGE_ID}包含:${REVISION})...

    docker tag ${IMAGE_ID} ${ACCOUNT_ID}.dkr.ecr.${AWS_DEFAULT_REGION}.amazonaws.com/${IMAGE_ID}
    docker push ${ACCOUNT_ID}.dkr.ecr.${AWS_DEFAULT_REGION}.amazonaws.com/${IMAGE_ID}
    

    希望有帮助:)

    • 0
  2. AlexanderF
    2019-07-09T10:47:28+08:002019-07-09T10:47:28+08:00

    这与 ECR 无关。这正是 docker 注册表的工作方式。

    (1) 有问题的代码使用两个不同的标签推送同一张图片,因此您在同一张图片上同时看到latest和<commit-id>标签是完全合理的。MLu 正确地建议您在 ECR 上已标记了一些图像latest。当您将新图像推送到具有与新图像相同标签的旧图像的 docker 注册表时,旧图像会丢失此标签,如果没有其他标签,它将变为<untagged>. 它与本地机器上的标记行为相同 ( docker tag ...)。

    (2) 如果您的任务定义仅使用latest标签,那么您不需要将两个标签都推送到 ECR。但是,在更复杂的场景中,您可能希望部署之前已经构建的映像(例如,最新构建有错误并且您想恢复),它可以节省构建时间。正如您在 (1) 中看到的,如果您推送带有标签的不同图像,如果您没有任何其他标签latest,旧图像将变为旧图像。<untagged>在这种情况下,您将不知道要部署哪个映像。提交 id 只是一种选择,例如,您可能希望使用日期或版本标记您的图像。

    • 0

相关问题

  • 与 AWS 中的其他系统相比,CentOS 报告的总内存较低

  • 如何在 Amazon Linux 服务器上升级到 Java 1.8?

  • 了解 Amazon AWS 使用数据

  • 亚马逊提供的负载均衡服务体验如何?

  • ELB 中现有节点的 AWS 自动缩放问题

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve