如何在AWS ECS Fargate中使两个容器可连接?

时间:2018-07-24 12:18:10

标签: amazon-web-services docker aws-ecs aws-fargate

我在任务定义中添加了两个容器

  1. 节点容器:

    name :nodeAPI
    port :exposed 5001
    mongoconnection string in the env variable : mongodb://mongo  [name of mongo container]
    
  2. Mongo容器:

    name :mongo
    port :exposed 27017
    

运行此任务时,节点容器无法连接到Mongo。我正在使用Fargate和网络作为awsvpc。

  1. 我该如何解决?
  2. 如何通过单独的任务定义运行它们?

3 个答案:

答案 0 :(得分:0)

运行任务时有一个安全组配置,请检查它们是否打开

fargate security groep

fargate就像ec2一样,只有您可以使用docker映像 因此您必须进行常规的ec2配置

答案 1 :(得分:0)

如果两个容器都在同一“任务定义”中定义,则它们不能使用“本地主机”进行通信。

在您的示例中,您的NodeJs应用将与mongo localhost:27017

对话

答案 2 :(得分:0)

由于Fargate中的每个任务都有自己的ENI,因此,在相同任务定义中的容器之间进行通信的正确方法是调用本地环回127.0.0.1localhost

例如:

第一个容器将能够使用127.0.0.1:<port of second container>作为地址与第二个容器进行通信,第二个容器能够使用127.0.0.1:<port of first container>与第一个容器进行通信

这在AWS Blog:https://aws.amazon.com/blogs/compute/task-networking-in-aws-fargate/

中有很好的解释。