Как сказать quarkus начинать со случайного свободного порта? А как прочитать назначенный номер порта? - PullRequest
0 голосов
/ 11 апреля 2020

Есть ли способ в Quarkus сказать ему, чтобы он начинал со случайного, но свободного http-порта, и как приложение может внутренне считывать этот номер порта? Этот вопрос может иметь больше смысла в контексте предстоящей поддержки командного режима (https://github.com/quarkusio/quarkus/pull/7681). По сути, я пытаюсь написать приложение на основе Quarkus. Шаги должны быть следующими: 1. Запустить Quarkus с произвольным свободным портом http. 2. Считать номер порта и открыть окно браузера (открытие индекса. html в localhost: random-port)

В качестве обходного пути я могу произвольно выбрать номер порта (он может быть свободным с высокой вероятностью), установить его как системное свойство, чтобы заставить Quarkus использовать его.

Спасибо, Даниэль

Ответы [ 2 ]

0 голосов
/ 14 апреля 2020

Я бы поместил службу в контейнер, затем вы бы использовали -P

Dockerfile

FROM somejavaimage
EXPOSE 8080  # some port

COPY . /app  # copy some code
# TODO: Build some code

RUN ...   # some java process

CLI

docker build -t . quarkus_image
docker run --rm -P quarkus_image  # forwards a random port on host to container's 8080

, пытаясь написать приложение пользовательского интерфейса на основе Quarkus

Для масштабируемости я написал бы API в Quarkus, а затем интерфейс внешнего интерфейса в отдельном контейнере веб-сервера (например, Nginx hosted Vuejs)

0 голосов
/ 12 апреля 2020

Это очень просто:

  1. Просто поместите следующую строку в application.properties :
quarkus.http.port=0
В месте, где вы хотите получить порт, используйте DI, чтобы получить значение этого свойства конфигурации (вы также можете использовать String, если необходимо, вместо Integer):
@ConfigProperty(name = "quarkus.http.port")
Integer assignedPort;
...