在 AWS Fargate 中链接容器

Linking Container in AWS Fargate

我尝试在 AWS Fargate 上设置一个小示例,并尝试让一个应用程序容器和一个数据库容器在那里。

任务定义启动了两个容器,但我的应用程序容器因 getaddrinfo ENOTFOUND db db:3306 而失败。 因此,我的应用程序容器无法找到数据库容器。

由于 Fargate 不允许 "links" 个 Docker 个容器,我想知道它们如何相互通信。 数据库容器的名称为 db,端口为 3306,我的应用程序容器配置为使用此名称。

不幸的是,定义容器的链接不适用于 Fargate,但仅适用于 "oldschool" ECS/EC2。

在本地 docker-compose 设置中,它是这样工作的。

您或许可以设置它,以便服务可以通过 public IP 地址相互通信,然后使用 VPC 保护端口,只有服务可以在上面与自己通信。

Fargate 任务中的容器共享一个网络命名空间,因此您根本不需要使用链接。您可以简单地通过本地主机进行通信。

例如,如果您有容器 A 运行 端口 8000 上的 Web 服务器,容器 B 可以通过 curl http://localhost:8000/

访问它

现在您可以使用 AWS Cloud Map 服务发现与 Amazon ECS 的集成 https://docs.aws.amazon.com/AmazonECS/latest/bestpracticesguide/networking-connecting-services.html 使用此服务,您将能够通过 DNS 名称调用其他容器