如何告诉 quarkus 从随机自由端口开始?以及如何读取分配的端口号?

How to tell quarkus to start with a random free port? And how to read assigned port number?

Quarkus 有没有办法告诉它从一个随机但免费的 http 端口开始,应用程序如何在内部读出这个端口号? 在即将推出的命令模式支持 (https://github.com/quarkusio/quarkus/pull/7681) 的上下文中,这个问题可能更有意义。实际上,我正在尝试编写一个基于 Quarkus 的 UI 应用程序。步骤应该是: 1. 使用一个免费的随机 http 端口启动 Quarkus 2.读出port-number,打开浏览器window(在localhost:random-port下打开index.html)

作为解决方法,我可以随机选择一个端口号(它可能是免费的,而且概率很高),将其设置为系统 属性 以强制 Quarkus 使用它。

谢谢, 丹尼尔

这超级简单:

  1. 只需将下一行放入 application.properties:
quarkus.http.port=0
  1. 在您想要获取端口的地方,使用 DI 获取此配置的值 属性(如果需要,您也可以使用 String 而不是 Integer):
@ConfigProperty(name = "quarkus.http.port")
Integer assignedPort;

我会把服务放在一个容器里,然后你会用-P

Docker 文件

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

trying to write a UI application based on Quarkus

为了可扩展性,我会在 Quarkus 中编写 API,然后在单独的 Web 服务器容器(如 Nginx 托管的 Vuejs)中编写前端 UI