# Deploy Quarkus

Quarkus is detected from your `pom.xml` or `build.gradle` and runs as a Java container on port `8080`. No Dockerfile needed - one is [generated](/platform/deployments/builds#dockerfiles-generated-or-your-own) unless the repo has its own (Quarkus projects often ship several under `src/main/docker` - a repo-root `Dockerfile` is the one that counts).

## Serve it

Match the routed [port](/create/build-settings#port) - leave both at `8080`, or map the variable:

```properties
quarkus.http.port=${PORT:8080}
quarkus.http.host=0.0.0.0
```

`0.0.0.0` is Quarkus's default host in a container profile.

## Configuration and database

MicroProfile Config reads [environment variables](/platform/environment-variables#build-time-and-runtime) - `QUARKUS_DATASOURCE_JDBC_URL` maps to `quarkus.datasource.jdbc.url`. From the [Credentials tab](/platform/databases/connect):

```
QUARKUS_DATASOURCE_JDBC_URL=jdbc:postgresql://203.0.113.10:5432/mydb?sslmode=require
QUARKUS_DATASOURCE_USERNAME=appuser
QUARKUS_DATASOURCE_PASSWORD=...
```

Flyway/Liquibase migrations at startup work as usual.

## Scaling

Quarkus starts fast for a JVM framework, and a native build starts in tens of milliseconds - native images pair beautifully with [scale to zero](/create/scaling#min-instances). Building native happens in your own Dockerfile; see [Deploy with a Dockerfile](/platform/frameworks/docker).

## Related

- [Java](/platform/frameworks/java): The runtime's defaults for any JVM app.
- [Dockerfile](/platform/frameworks/docker): Ship a native image for instant cold starts.
- [Connect an app](/platform/databases/connect): Connection details in JDBC shape.
