【发布时间】:2020-10-23 09:46:23
【问题描述】:
我有一个service-A,其任务定义为task-A,其中包括多个容器定义,例如nginx 和grafana。这些容器如何相互通信?使用的网络是默认的桥接网络。
我已尝试curl grafana:3000,但容器无法解析名称。如果我在本地机器上尝试同样的方法,它会起作用。 我错过了什么?
这是我的任务定义:
resource "aws_ecs_task_definition" "this" {
family = "x"
execution_role_arn = "x"
task_role_arn = "x"
container_definitions = jsonencode(local.task_definition)
}
容器定义摘录:
locals {
task_definition = [
{
name: "nginx",
image: "nginx:latest",
portMappings: [{
containerPort: 80,
hostPort: 0,
protocol: "tcp"
}],
dependsOn: [{
"containerName": "grafana",
"condition": "START"
}]
},
{
name: "grafana",
image: "grafana/grafana:latest",
portMappings: [{
containerPort : 3000,
hostPort: 0,
protocol: "tcp"
}]
}
]
}
【问题讨论】:
-
TBH:我对 AWS ECS 不是很熟悉。但是您听说过“Amazon ECS 服务发现”吗?通过阅读相关的博客文章,它似乎正是您所需要的:aws.amazon.com/de/blogs/aws/amazon-ecs-service-discovery
-
是的,我听说过它,我的积压工作是使用 AWS 服务或 Consul 之类的工具实施适当的服务发现解决方案。我想要实现的是在单个 Docker 网络中运行 Docker 容器时已经获得的非常基本的功能。 AWS ECS 似乎不支持这种方式
标签: docker amazon-ecs