首页 > 解决方案 > 如何将更新的容器映像推送到 AWS ECR?

问题描述

所以我对容器和相关术语的理解充其量是微不足道的,所以如果我说的完全不正确,请纠正我。

我有一个作为容器实例发布的 Lambda 函数。我成功推送了我的容器并运行了我的 Lambda 代码,该代码有一个错误(旁注:真的没有其他方法可以测试微小的代码更改,而不是每次都重建和推送整个容器吗?我没有使用 SAM,它是我后悔并坚持的决定)。

我去修复了这个错误,我唯一能找到的就是原始命令:

docker build -T CONTAINER-NAME .

aws ecr create-repository --repository-name CONTAINER-NAME --image-scanning-configuration scanOnPush=true
docker tag CONTAINER-NAME:latest 1234.dkr.ecr.us-west-2.amazonaws.com/CONTAINER-NAME:latest
aws ecr get-login-password | docker login --username AWS --password-stdin 1234.dkr.ecr.us-west-2.amazonaws.com
docker push 1234.dkr.ecr.us-west-2.amazonaws.com/CONTAINER-NAME:latest

这些第一次运行良好,但现在运行没有错误,但不要更新我的图像。我怀疑它与标签有关,文档非常不清楚 - 它们只是像其他 AWS 资源一样的标签,还是更多?我已经尝试过更改标签的不同组合,这通常会导致给定标签或 repo 不存在的错误。

标签: amazon-web-servicesdocker

解决方案


docker tag $IMAGE_REPO_NAME:$IMAGE_TAG $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/$IMAGE_REPO_NAME:$IMAGE_TAG
docker push $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/$IMAGE_REPO_NAME:$IMAGE_TAG

您可以尝试使用这些代码,创建具有不同标签的新图像。我的是使用日期命令来分隔标签。你指定了最新的标签,运行环境已经有了,所以不会拉新的。


推荐阅读