将ECS任务与服务发现连接起来



这里是我的情况:我有一个docker,在相同的网络中配置了一些容器。我需要所有的容器都能与其他容器通信,其中一些容器有一个环境,我需要设置另一个容器的端点,比如这个例子:

containerA:
image: imageA:0.0.1
port:
- "8080"
network:
- net1
containerB:
image: imageB:0.0.1
environments:
- BRIDGE: http://containerA:8080
network:
- net1

我现在需要将这个docker compose转换为ECS服务(一个Task用于containerA,一个Task for containerB(。我使用ecs-cli没有任何问题,我可以创建一个集群,使用Fargate运行服务,使用同一个安全组在同一个VPC内运行所有任务,并且我为所有ecs服务启用了服务发现,使用相同的命名空间(所以我有containerA.namespace1和containerB.namescape1(。但我在这两项任务之间的联系上有一个问题:我试着这样设置:

BRIDGE: http://containerA:8080
BRIDGE: http://containerA.namespace1:8080
BRIDGE: http://containerA.namespace1.local
BRIDGE: http://containerA.namespace1.local:8080

但所有这些选项都不起作用。我尝试一个";temp";这个问题的解决方案使用从taskA生成的公共ip,但如果我更新任务A,公共ip就会正确地更改,我也需要重新部署taskB。所以,问题是:我怎样才能使用"主机名";这样我就可以连接到服务的名称,而不是任务的公共ip?谢谢你的建议

[基于线程更新]下面最初提供的答案假设您愿意评估一个替代工具来在ECS上部署您的compose文件。

很可能,如果您使用与ECS的本地docker compose集成,您可以up您的compose文件,并在不做任何特殊操作的情况下实现您想要的内容。

你可以在这里阅读更多关于如何做到这一点的信息。顺便说一句,你使用的服务发现机制与我在博客中使用的应用程序中需要的发现机制相同。我很有信心它会为你工作。

最新更新