从 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 并检查该部分是否正常工作。现在我将一些东西点击在一起,但无法“剥离联合”
您需要确保部署到公有子网(具有到 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 上的公共互联网上,因为这可能是一个安全问题,您必须明确采取一些步骤才能将事物暴露在互联网上。