14

I would like my Quarkus application to run on a port other than the default. How can I accomplish that?

geoand
  • 60,071
  • 24
  • 172
  • 190

3 Answers3

27

The Quarkus configuration property to be used is quarkus.http.port (the default value is 8080). If this property is set in application.properties then that value will be used.

The property can also be overridden at runtime as follows:

When running a Quarkus application in JVM mode you can set the port using the quarkus.http.port System property. For example:

java -Dquarkus.http.port=8081 -jar example-runner.java

The same property applies to GraalVM Native Mode images. For example:

./example-runner -Dquarkus.http.port=8081
geoand
  • 60,071
  • 24
  • 172
  • 190
  • Also if you run this app inside a container remember to add: `-Dquarkus.http.host=0.0.0.0` to access from outside. – Hector Ventura Mar 16 '19 at 21:11
  • @HectorVenturaReyes that is true for `0.11.0`, but should not be necessary for newer versions – geoand Mar 17 '19 at 12:10
  • @geoand where is the full list of quarkus properties? – Rafael Soares - tuelho May 08 '19 at 21:52
  • 2
    @Tuelho There isn't one yet (but there are plans to create it). You would have to look at the source code of *Config classes, like https://github.com/quarkusio/quarkus/blob/0.14.0/extensions/undertow/runtime/src/main/java/io/quarkus/undertow/runtime/HttpConfig.java – geoand May 09 '19 at 05:47
  • 4
    And if you need to override the default test port use: `quarkus.http.test-port=8888` I was having issues running tests on windows. – ktulinho Jul 18 '19 at 14:38
  • The following command also works: `mvn -Dquarkus.http.port=8081 quarkus:dev` – stena Jan 26 '20 at 12:16
5

To complement geoand’s answer, you can use the same property for mvn quarkus:dev. Unfortunately you cannot directly set it in a profile in ~/.m2/settings.xml to avoid the need to type it each time (for example because Microk8s binds 8080), but you can set it via jvm.args:

<profiles>
    <profile>
        <id>microk8s-quarkus-dev</id>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
        <properties>
            <jvm.args>-Dquarkus.http.port=8090</jvm.args>
        </properties>
    </profile>
</profiles>

Alternately, you could configure this in project sources:

echo '%dev.quarkus.http.port=8090' >> src/main/resources/application.properties

though this would not be shared across projects, and might be unwanted by other developers of the same project.

Jesse Glick
  • 24,539
  • 10
  • 90
  • 112
2

You can use <projhome>/resources/application.properties to configure the port.

For example

quarkus.http.port=8080
%dev.quarkus.http.port=8811
%test.quarkus.http.port=7711
%server.quarkus.http.port=6611

Here dev, test, and server refer to the profiles.

You can run them as below

$ mvn compile quarkus:dev -- port 8811 will be used

$ mvn -Dquarkus-profile=server compile quarkus:dev -- port 6611 will be used