Quarkus

Quarkus

Short guide to publish a Quarkus app on Devployer.

Before you start

  • GitHub repository with your Quarkus project
  • Build tool detected by Nixpacks:
    • Maven: pom.xml at the root
    • Gradle: gradlew (wrapper) at the root
  • Compatible JDK (Devployer defaults to 17; also supports 8 and 11)
  • For SQL databases, include the matching Quarkus JDBC extension in the project (see Managed database)

Step by step

1. Prepare the repository

Make sure the project builds locally:

# Maven
./mvnw -DskipTests package
# or: mvn -DskipTests package

# Gradle
./gradlew build -x test

A nixpacks.toml is not required for the standard case. Devployer configures Quarkus packaging (uber-jar) and start command after create.

2. (Optional) Pin the JDK version

In Devployer you can select the JDK when creating the app, or set:

NIXPACKS_JDK_VERSION=8

Supported values: 8, 11, 17.

3. Create the application in Devployer

  1. Open Devployer and choose Deploy from GitHub
  2. Select the repository and branch
  3. Choose the Quarkus framework
  4. Create the application (you can enable instant deploy)

The app listens on port 8080 (same pattern as Spring Boot).

4. Configure environment variables

VariableNotes
NIXPACKS_JDK_VERSIONOptional: 17 (default), 8, 11
JAVA_OPTSOptional: JVM memory, e.g. -Xmx512m
QUARKUS_HTTP_PORT / PORTManaged by Devployer (8080)
QUARKUS_HTTP_HOSTManaged by Devployer (0.0.0.0)

Managed database

When you attach a private managed database to a Quarkus app, Devployer injects only Quarkus variables with the real connection of that database (private internal hostname, app user, password, and database name).

Spring Boot / Laravel keys are not written on Quarkus apps.

PostgreSQL

VariableExample value
QUARKUS_DATASOURCE_DB_KINDpostgresql
QUARKUS_DATASOURCE_JDBC_URLjdbc:postgresql://<db-uuid>:5432/<database>
QUARKUS_DATASOURCE_USERNAMEreal app user
QUARKUS_DATASOURCE_PASSWORDreal app password

Required dependency:

<dependency>
  <groupId>io.quarkus</groupId>
  <artifactId>quarkus-jdbc-postgresql</artifactId>
</dependency>

MySQL

VariableExample value
QUARKUS_DATASOURCE_DB_KINDmysql
QUARKUS_DATASOURCE_JDBC_URLjdbc:mysql://<db-uuid>:3306/<database>
QUARKUS_DATASOURCE_USERNAMEreal app user
QUARKUS_DATASOURCE_PASSWORDreal app password

Required dependency:

<dependency>
  <groupId>io.quarkus</groupId>
  <artifactId>quarkus-jdbc-mysql</artifactId>
</dependency>

MariaDB

VariableExample value
QUARKUS_DATASOURCE_DB_KINDmariadb
QUARKUS_DATASOURCE_JDBC_URLjdbc:mariadb://<db-uuid>:3306/<database>
QUARKUS_DATASOURCE_USERNAMEreal app user
QUARKUS_DATASOURCE_PASSWORDreal app password

Required dependency:

<dependency>
  <groupId>io.quarkus</groupId>
  <artifactId>quarkus-jdbc-mariadb</artifactId>
</dependency>

MongoDB

VariableExample value
QUARKUS_MONGODB_CONNECTION_STRINGmongodb://USER:PASS@<db-uuid>:27017/DATABASE

Required extension: quarkus-mongodb-client (or your project’s MongoDB extension).

Engine changes and cleanup
  • An application can have one linked managed database at a time.
  • When you delete the linked database, or attach another engine after removing the previous one, Devployer removes all previous managed DB env keys (including leftovers such as SPRING_* / DATABASE_* / DB_* if present) and writes a clean set for the new engine only.
  • quarkus.datasource.db-kind is a build-time property. After attaching or changing a SQL database, Devployer triggers a redeploy (rebuild), not only a restart.

Warning: If the app was built with PostgreSQL (quarkus-jdbc-postgresql) and you attach MariaDB/MySQL without adding the matching JDBC extension, the build or runtime will fail. Align the Quarkus JDBC dependency with the managed engine.

5. Deploy and verify

  1. Wait for the build to finish
  2. Open the public URL
  3. If it fails, check the deployment logs in Devployer

What Devployer configures for Quarkus

After create, Devployer syncs build commands and packaging for an executable uber-jar, then starts the runner JAR. You normally do not need a custom nixpacks.toml.

Quick checklist

  • pom.xml or gradlew at the repo root
  • Project builds locally without blocking tests
  • Quarkus framework selected in Devployer
  • Correct JDK (NIXPACKS_JDK_VERSION if not 17)
  • Matching JDBC / Mongo extension for the managed database engine
  • After attaching a managed DB, wait for the redeploy so db-kind is baked into the build
  • Redeploy after changing dependencies