首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在向ECR推送镜像时使用Terraform控制Docker镜像版本

如何在向ECR推送镜像时使用Terraform控制Docker镜像版本
EN

Stack Overflow用户
提问于 2021-02-17 18:14:53
回答 1查看 553关注 0票数 0

我是新来Terraform的,所以请善待我。

在构建过程中,Terraform会在每次构建时使用新名称将docker镜像推送到AWS ECR。

由于镜像名称不同,我们需要为每个新构建创建一个新的任务定义。

有没有办法在Terraform中处理这个问题?

任何帮助都是非常感谢的。

EN

回答 1

Stack Overflow用户

发布于 2021-02-21 22:46:17

如果您可以每次都用新图像替换任务定义,那么您可以更新任务定义中使用的图像名称,Terraform将为您处理更新。

如果您每次都需要生成新的任务定义,并保留旧的任务定义,那么请继续阅读。

如果您不需要将任务定义保持在Terraform状态,则可以在部署后将其删除,以便下次创建新的任务定义。

state rm命令将资源从以下状态中删除:

terraform state rm aws_ecs_task_definition.service

如果您确实需要将每个任务定义保持在Terraform状态,则可以创建一个数据源,您可以使用for_each运算符为其生成资源集合。

例如,您可以将每个任务定义的容器定义保存到文件夹中的JSON文件中。每个文件如下所示:

代码语言:javascript
复制
[
  {
    "name": "a-service",
    "image": "my-image",
    "cpu": 10,
    "memory": 512,
    "essential": true,
    "portMappings": [
      {
        "containerPort": 80,
        "hostPort": 80
      }
    ]
  }
]

使用fileset函数可以列出文件夹中的文件,并使用for_each为每个文件生成新资源

代码语言:javascript
复制
resource "aws_ecs_task_definition" "service" {
  family                = "service"
  for_each              = fileset(path.module, "task-definitions/*.json")
  container_definitions = file("${path.module}/${each.key}")
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66239859

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档