lol*_*ter 9 amazon-ecs aws-code-deploy aws-codepipeline
好的,我有一个 CodePipeline,它的功能非常普通
CodeCommit -> Build Docker images -> CodeDeploy to ECS
在该buildspec.yml文件中,AWS要求输出imagedefinitions.json为 CodePipeline 可用于将容器名称映射到 ECR 图像 URL 的工件。
以下是经常引用的示例,说明如何在您的 中执行此操作buildspec.yml:
printf '[{"name":"MyService","imageUri":"%s"}]' $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/myservice/app:latest > imagedefinitions.json
但这对我来说似乎完全多余。在 ECS 任务定义中,我们可以在 下包含以下内容containerDefinitions:
"containerDefinitions": [
{
"name": "MyService",
"image": "123456789.dkr.ecr.us-east-1.amazonaws.com/myservice/app:latest"
},
...
]
Run Code Online (Sandbox Code Playgroud)
为什么为了使用 CodePipeline CodeDeploy ECS 任务,我们必须提供 ECS 任务定义中已指定的信息?在这里消除对工件(以及存储所述工件的 S3 存储桶)的需要会更加干净!
也许 CodeDeploy/ECS 的一些基础知识我不明白。
你有一个很好的观点,但是在生产系统中使用“:latest”来识别/检索图像通常不是一个好主意,主要是因为标签不是确定性的,可能会导致意外。互联网上有很多文章讨论这种反模式,例如[1]。
为了回答您的问题,“imagedefinitions.json”的想法是识别任务定义中容器的更新图像。它并不打算一直使用“:latest”标签。
[1] https://vsupalov.com/docker-latest-tag/
| 归档时间: |
|
| 查看次数: |
6530 次 |
| 最近记录: |