我在Amazon Web Services中创build了经典的负载平衡器,并且已将侦听器端口设置为9090.并且我已将负载平衡器与具有2个EC2实例的集群关联。 我已经为9090的实例给出了入站规则。
为了在集群中创build服务,我创build了如下的任务定义。
{ "family": “my-spring-task“, "containerDefinitions": [{ "image": “my-docker-group/my-spring-app“, "name": "my-spring-app", "cpu": 10, "memory": 256, "essential": true, "portMappings": [{ "containerPort": 9090, "hostPort": 9090 }] }] }
然后我创build这个服务,给出上面的任务定义。
aws ecs register-task-definition --cli-input-json file://service90-task.json aws ecs create-service --cluster service90-cluster --service-name service90-service --load-balancers loadBalancerName=service90-load-balancer,containerName=my-spring-app,containerPort=9090 --task-definition service90-task --role ecs-service-role --desired-count 0
我的计划是运行一个Spring引导项目,它是用gradle和docker插件构build的。
我有运行端口8080的项目。它正在按预期工作。 但是当我尝试在9090端口上运行服务时,由于运行状况检查失败而无法运行。
我需要build议如何使端口9090或任何端口号。
最有可能的容器内的端口仍然是8080,除非你重新configuration弹簧启动本身使用9090.在这种情况下,你将要设置containerPort为8080,离开hostPort在9090。
或者,您可以将主机端口留空,ECS将为每个容器分配一个随机“高”端口,然后将其附加到ALB。 这有助于减轻您在ECS群集中映射端口分配的需求,同一个容器的多个实例可以在同一台主机上运行。