我在端口5000上有一个Sping Boot 应用程序,我正试图将其部署到ECS fargate。当我在本地将其构建为Docker映像时,我可以轻松地做80:5000,并且不需要URL上的端口。
我似乎不能做上面的ECS fargate。
当我在任务定义中将容器端口设置为5000时,它创建了如下内容:
{
...
"portMappings": [
{
"containerPort": 5000,
"hostPort": 5000,
"protocol": "tcp"
}
],
...
}
我尝试将其修复为JSON,但收到一条错误消息,指出主机和容器端口必须匹配。
像这样,我不得不在安全组中为端口5000打开一个TCP入站规则,并且我需要使用5000端口访问我的应用程序的公共IP。没有它它就无法工作(端口80也在安全组中打开)。
我以前对超过1个容器的ALB和服务做过这个操作,它在没有5000端口的情况下与域名或负载平衡器的DNS一起工作得很好。
我能用一个容器做到这一点吗?对不起,我的菜鸟。
1条答案
按热度按时间3zwtqj6y1#
我以前对超过1个容器的ALB和服务做过这个操作,它在没有5000端口的情况下与域名或负载平衡器的DNS一起工作得很好。
我可以用一个容器实现这一点吗?
不需要。您要么需要修改SpringBoot应用程序以侦听端口
80
,或者在ECS服务前面添加一个应用程序负载平衡器。注意,即使您将容器配置为侦听端口80
,这仍然是非常不安全的。如果您要将ECS容器公开给Web浏览器,则绝对应该使用配置了AWS ACM SSL证书的应用程序负载平衡器确保Web浏览器与AWS之间的连接安全。