Docker 更新ECS中的任务定义

Docker 更新ECS中的任务定义,docker,amazon-ecs,aws-codebuild,amazon-ecr,Docker,Amazon Ecs,Aws Codebuild,Amazon Ecr,我目前正试图通过CodePipeline自动化我的构建和部署过程。在我的代码在codebuild中完成构建后,我想通过aws cli通过codebuild更新我的任务定义和服务 我在更新服务时遇到问题,因为我无法跟踪修订号。有没有办法让更新后的服务知道使用最新版本?我知道您可以指定json,但我如何操作修订号,以便服务指向我注册表中的正确图像?稍微阅读一下Amazon api的文档,并不能告诉您哪个是最后上载的图像。我建议在上传过程中捕获版本,以便能够在服务中设置它 当您列出这些图像时,我给您留

我目前正试图通过CodePipeline自动化我的构建和部署过程。在我的代码在codebuild中完成构建后,我想通过aws cli通过codebuild更新我的任务定义和服务


我在更新服务时遇到问题,因为我无法跟踪修订号。有没有办法让更新后的服务知道使用最新版本?我知道您可以指定json,但我如何操作修订号,以便服务指向我注册表中的正确图像?

稍微阅读一下Amazon api的文档,并不能告诉您哪个是最后上载的图像。我建议在上传过程中捕获版本,以便能够在服务中设置它

当您列出这些图像时,我给您留下api的响应

响应语法:

{
   "imageIds": [ 
      { 
         "imageDigest": "string",
         "imageTag": "string"
      }
   ],
   "nextToken": "string"
}
一个可能的过程可以是:

  • 获取您的回购协议标签:
TAG=$(git descripe--always)

  • 使用此标记生成图像:
docker构建-t[acount].dkr.ecr.[zone].amazonaws.com/[app]:TAG

  • 推送图像:
docker push[acount].dkr.ecr[zone].amazonaws.com/[app]:TAG

  • 使用图像更新任务:

  • 使用任务更新服务


希望这能帮助你

阅读一点亚马逊api的文档,不会告诉你哪张是最后上传的图片。我建议在上传过程中捕获版本,以便能够在服务中设置它

当您列出这些图像时,我给您留下api的响应

响应语法:

{
   "imageIds": [ 
      { 
         "imageDigest": "string",
         "imageTag": "string"
      }
   ],
   "nextToken": "string"
}
一个可能的过程可以是:

  • 获取您的回购协议标签:
TAG=$(git descripe--always)

  • 使用此标记生成图像:
docker构建-t[acount].dkr.ecr.[zone].amazonaws.com/[app]:TAG

  • 推送图像:
docker push[acount].dkr.ecr[zone].amazonaws.com/[app]:TAG

  • 使用图像更新任务:

  • 使用任务更新服务


希望这能对您有所帮助

非常感谢您的帮助,我最终使用了CodeBuild,其版本号在全局环境变量中提供,这使得跟踪每个图像非常容易!您可以使用以下命令aws ecs descripe task definition--task definition web服务器| egrep“revision”| tr“/”| awk“{print$2}”| sed's/“$//”非常感谢您的帮助,我最终使用了CodeBuild,其版本号在全局环境变量中提供,这使得跟踪每个图像非常容易!您可以使用此命令aws ecs descripe task definition--task definition web server | egrep“revision”| tr“/”| awk“{print$2}”| sed's/“$/”您可以在任务定义中去掉修订号(和冒号)以强制您的服务使用最新版本。您可以保留修订号(和冒号)脱离任务定义,强制您的服务使用最新版本。