Я создал классический балансировщик нагрузки в Amazon Web Services и присвоил порту прослушивателя 9090. Я связал балансировщик нагрузки с кластером с двумя экземплярами EC2. Я также привел входящие правила для экземпляров для 9090.
А чтобы создать службу в кластере, я создал определение задачи следующим образом.
{
"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
}]
}]
}
Затем я создаю сервис с приведенным выше определением задачи.
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 Boot, который построен с помощью плагина gradle и docker.
У меня есть проект, на котором запущен порт 8080. И он работает, как ожидалось. Но когда я пытаюсь запустить службу на порту 9090, она не работает из-за сбоя проверки работоспособности.
Мне нужен совет, как сделать порт 9090. или любой номер порта.
Скорее всего, порт внутри контейнера по-прежнему 8080, если вы не перенастроили саму весеннюю загрузку для использования 9090. В этом сценарии вы захотите установить для containerPort значение 8080 и оставить hostPort на 9090.
В качестве альтернативы вы можете оставить hostPort пустым, и ECS назначит случайный «высокий» порт каждому контейнеру, а затем присоединит его к ALB. Это избавляет вас от необходимости отображать назначения портов в кластере ECS, и на одном хосте могут работать несколько экземпляров одного и того же контейнера.