繁体   English   中英

如何从 nginx 容器调用另一个 ECS Fargate 容器?

[英]How to call another ECS Fargate container from nginx container?

假设我有 2 个容器。 一个是 nginx,另一个是一个简单的应用程序。 每个容器都有自己的 ECR 存储库映像和任务定义。 我的 nginx 容器在公共 su.net 中运行,公共 IP。我如何将来自 nginx 的请求传递到我的容器,如下所示:

proxy_pass app_container:9000;

如何让我的第二个容器只对 nginx 容器可见? 我应该把他放在私人 su.net 中吗? 我是否需要 map 任务定义中应用程序容器的端口? 我应该使用 Cloud Map 吗? 我应该用 localhost:9000 给他打电话吗? 容器的名称是否与任务定义中的名称相同?

我尝试使用服务发现,但我仍然不知道如何调用我的容器。 我创建了容器,它正在运行,但是我的 nginx 容器无法联系到他,无论我如何尝试,文档都没有很好地解释。 我应该如何称呼我的容器?

如何让我的第二个容器只对 nginx 容器可见? 我应该把他放在私人 su.net 中吗?

私人 su.net 在这里很好,是的。

我是否需要 map 任务定义中应用程序容器的端口?

不,它们在两个单独的服务上运行,因为您使用的是两个单独的任务定义。 所以端口映射在这里不是一个选项。

我应该使用 Cloud Map 吗?

不,只需使用 ECS 服务发现。

我应该用 localhost:9000 给他打电话吗?

不,这只有在两个容器都在同一个任务定义中时才有效。 老实说,这可能是解决此类问题的正确方法。 在完全独立的服务器上运行 Nginx 是没有必要的,这会使这一切变得更加复杂。

容器的名称是否与任务定义中的名称相同?

不,您可以选择使用服务发现,然后使用您在服务发现命名空间中为服务提供的名称,或者将两个容器移动到相同的任务定义中并使用localhost进行服务间通信。

我尝试使用服务发现,但我仍然不知道如何调用我的容器。 我创建了容器,它正在运行,但是我的 nginx 容器无法联系到他,无论我如何尝试,文档都没有很好地解释。 我应该如何称呼我的容器?

如果没有关于你究竟做了什么的任何细节,就不可能指出你做错了什么。 当您为服务发现创建一个私有的 DNS 命名空间时,您使用了什么 DNS 名称? 服务地址将是服务名称 + 私有 DNS 名称。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM