AWS Fargate Angular dockerize 应用程序未暴露于公共 IP

问题描述 投票:0回答:1

从 Fargate 开始尝试使用 NGINX 托管 Angular dockerized 应用程序。但是当我打开公共IP来查看应用程序时,它就不起作用了。然而教程说它会。

我已经测试了 docker 镜像,当我在 8080 上公开它时它可以工作(很高兴知道在 Dockerfile 中我还包含一个

expose 8080
。NGINX 配置也监听 8080。

采取的步骤:

创建了 aws fargate 集群(无服务器)

带有以下端口映射和 0,5cpu 的任务定义以及来自私有 aws 存储库的图像 uri

创建了包含该任务的服务,并尝试使用或不使用容器 8080:8080 的“应用程序负载均衡器”并监听 8080 HTTP

服务启动并且任务正在运行,但我已经尝试了在浏览器中和使用curl可以找到的所有IP - 添加和不添加8080端口,但似乎没有任何效果。我可能会错过什么?

"portMappings": [
{
"name": "ui-8080-tcp",
"containerPort": 8080,
"hostPort": 8080,
"protocol": "tcp"
}
],

我将尝试取消我的 docker 映像并将其替换为基本 NGINX 映像,但与此同时有人可能有答案?

我希望当您在 A ip 上添加工作的 docker 容器映像时,fargate 集群可以立即运行,就像使用 K8s 一样,您可以在其中卷曲 pod ip 并检查该部分是否正常工作。现在我将一些东西点击在一起,但无法“剥离联合”

docker amazon-ecs aws-fargate
1个回答
0
投票

您需要确保部署到公有子网(具有到 Internet 网关的路由的子网),并且已配置 ECS 为任务分配公有 IP 地址。然后确保您在浏览器中使用的 IP 地址是公共 IP 地址(而不是您的 VPC CIDR 块中的 IP 地址)。

您还需要确保为 ECS 任务分配了一个安全组,该安全组允许端口

8080
上的入站流量。

您需要确保将端口

:8080
添加到您尝试在浏览器中访问的地址。如果不添加它,浏览器将尝试使用默认端口
80
,但该端口在这里不起作用,因为您没有任何内容在侦听端口
80

如果上述方法都不能解决问题,您可能需要编辑您的问题以包含完整的 Nginx 配置文件。


我希望当您在 A ip 上添加工作的 docker 容器映像时,fargate 集群可以立即运行,就像使用 K8s 一样,您可以在其中卷曲 pod ip 并检查该部分是否正常工作。

通过 AWS EKS 在 AWS 上运行 k8s 具有与 AWS ECS 相同的网络配置要求,正如我在答案中概述的那样。肯定有一个最低的 VPC/安全组/网络配置才能使此类事情与 ECS 或 EKS 或 AWS 上的其他任何东西一起工作。默认情况下,事物通常不会暴露在 AWS 上的公共互联网上,因为这可能是一个安全问题,您必须明确采取一些步骤才能将事物暴露在互联网上。

© www.soinside.com 2019 - 2024. All rights reserved.