我尝试在AWS Fargate上设置一个小例子,并尝试在那里安装一个带有一个数据库容器的应用程序容器。
任务定义启动两个容器,但我的app容器失败并显示WebView
。
因此,我的应用程序容器找不到数据库容器。
由于Fargate不允许使用Docker容器的“链接”,我想知道他们如何相互通信。
数据库容器的名称为getaddrinfo ENOTFOUND db db:3306
,端口为db
,我的应用容器已配置为使用此功能。
不幸的是,定义容器的链接不适用于Fargate,但只适用于“oldschool”ECS / EC2。
在本地的docker-compose设置中,它正在以这种方式工作。
答案 0 :(得分:33)
Fargate任务中的容器共享网络命名空间,因此您根本不需要使用链接。您只需通过localhost进行通信即可。
例如,如果容器A在端口8000上运行Web服务器,则容器B可以使用curl http://localhost:8000/
答案 1 :(得分:0)
您可以对其进行设置,以便服务可以通过公共IP地址相互通信,然后使用VPC保护端口,只有服务可以自行通信。