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.xmlat the root - Gradle:
gradlew(wrapper) at the root
- Maven:
- 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
- Open Devployer and choose Deploy from GitHub
- Select the repository and branch
- Choose the Quarkus framework
- Create the application (you can enable instant deploy)
The app listens on port 8080 (same pattern as Spring Boot).
4. Configure environment variables
| Variable | Notes |
|---|---|
NIXPACKS_JDK_VERSION | Optional: 17 (default), 8, 11 |
JAVA_OPTS | Optional: JVM memory, e.g. -Xmx512m |
QUARKUS_HTTP_PORT / PORT | Managed by Devployer (8080) |
QUARKUS_HTTP_HOST | Managed 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
| Variable | Example value |
|---|---|
QUARKUS_DATASOURCE_DB_KIND | postgresql |
QUARKUS_DATASOURCE_JDBC_URL | jdbc:postgresql://<db-uuid>:5432/<database> |
QUARKUS_DATASOURCE_USERNAME | real app user |
QUARKUS_DATASOURCE_PASSWORD | real app password |
Required dependency:
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-jdbc-postgresql</artifactId>
</dependency>
MySQL
| Variable | Example value |
|---|---|
QUARKUS_DATASOURCE_DB_KIND | mysql |
QUARKUS_DATASOURCE_JDBC_URL | jdbc:mysql://<db-uuid>:3306/<database> |
QUARKUS_DATASOURCE_USERNAME | real app user |
QUARKUS_DATASOURCE_PASSWORD | real app password |
Required dependency:
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-jdbc-mysql</artifactId>
</dependency>
MariaDB
| Variable | Example value |
|---|---|
QUARKUS_DATASOURCE_DB_KIND | mariadb |
QUARKUS_DATASOURCE_JDBC_URL | jdbc:mariadb://<db-uuid>:3306/<database> |
QUARKUS_DATASOURCE_USERNAME | real app user |
QUARKUS_DATASOURCE_PASSWORD | real app password |
Required dependency:
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-jdbc-mariadb</artifactId>
</dependency>
MongoDB
| Variable | Example value |
|---|---|
QUARKUS_MONGODB_CONNECTION_STRING | mongodb://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-kindis 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
- Wait for the build to finish
- Open the public URL
- 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.xmlorgradlewat the repo root - Project builds locally without blocking tests
- Quarkus framework selected in Devployer
- Correct JDK (
NIXPACKS_JDK_VERSIONif not 17) - Matching JDBC / Mongo extension for the managed database engine
- After attaching a managed DB, wait for the redeploy so
db-kindis baked into the build - Redeploy after changing dependencies