Quarkus supports the automatic provisioning of unconfigured services in development and test mode. We refer to this capability as Dev Services. From a developer’s perspective this means that if you include an extension and don’t configure it then Quarkus will automatically start the relevant service (usually using Testcontainers behind the scenes) and wire up your application to use this service.

All this functionality is part of the Quarkus deployment modules, so does not affect the production application in any way. If you want to disable all Dev Services you can use the quarkus.devservices.enabled=false config property, although in most cases this is not necessary as simply configuring the service will result in the Dev Service being disabled automatically.

Note that the default startup timeout is 60s, if this is not enough you can increase it with the quarkus.devservices.timeout property.

This page lists all the Dev Services that Quarkus supports.

In order to use Dev Services you will generally need a working Docker environment (remote environments are supported). If you don’t have Docker installed you will need to configure your services normally.

AMQP

The AMQP Dev Service will be enabled when the quarkus-smallrye-reactive-messaging-amqp extension is present in your application, and the broker address has not been explicitly configured. More information can be found at the AMQP Dev Services Guide.

Apicurio Registry

The Apicurio Dev Service will be enabled when the quarkus-apicurio-registry-avro extension is present in your application, and it’s address has not been explicitly configured. More information can be found at the Apicurio Registry Dev Services Guide.

Databases

The database Dev Services will be enabled when a reactive or JDBC datasource extension is present in the application, and the database URL has not been configured. More information can be found at the Datasource Guide.

Quarkus provides Dev Services for all databases it supports except Oracle. Most of these are run in a container, with the exception of H2 and Derby which are run in process. Dev Services are supported for both JDBC and reactive drivers.

Kafka

The Kafka Dev Service will be enabled when the quarkus-kafka-client extension is present in your application, and the broker address has not been explicitly configured. More information can be found at the Kafka Dev Services Guide.

Keycloak

The Keycloak Dev Service will be enabled when the quarkus-oidc extension is present in your application, and the server address has not been explicitly configured. More information can be found at the OIDC Dev Services Guide.

Kogito

The Kogito Dev Service will be enabled when either kogito-quarkus or kogito-quarkus-processes extension is present in your application. More information can be found at the Kogito Dev Services Guide.

Configuration property fixed at build time - All other configuration properties are overridable at runtime

Configuration property

Type

Default

If DevServices has been explicitly enabled or disabled. DevServices is generally enabled by default, unless there is an existing configuration present. When DevServices is enabled Quarkus will attempt to automatically configure and start a Data Index when running in Dev mode.

boolean

true

The container image name to use.

string

quay.io/kiegroup/kogito-data-index-ephemeral

Optional fixed port the dev service will listen to. If not defined, the port will be chosen randomly.

int

8180

Indicates if the Data Index instance managed by Quarkus Dev Services is shared. When shared, Quarkus looks for running containers using label-based service discovery. If a matching container is found, it is used, and so a second one is not started. Otherwise, Dev Services for Kogito starts a new container. The discovery uses the kogito-dev-service-data-index label. The value is configured using the service-name property. Container sharing is only used in dev mode.

boolean

true

The value of the kogito-dev-service-data-index label attached to the started container. This property is used when shared is set to true. In this case, before starting a container, Dev Services for Kogito looks for a container with the kogito-dev-service-data-index label set to the configured value. If found, it will use this container instead of starting a new one. Otherwise it starts a new container with the kogito-dev-service-data-index label set to the specified value. This property is used when you need multiple shared Data Index instances.

string

kogito-data-index

MongoDB

The MongoDB Dev Service will be enabled when the quarkus-mongodb-client extension is present in your application, and the server address has not been explicitly configured. More information can be found at the MongoDB Guide.

RabbitMQ

The RabbitMQ Dev Service will be enabled when the quarkus-smallrye-reactive-messaging-rabbitmq extension is present in your application, and the broker address has not been explicitly configured. More information can be found at the RabbitMQ Dev Services Guide.

Redis

The Redis Dev Service will be enabled when the quarkus-redis-client extension is present in your application, and the server address has not been explicitly configured. More information can be found at the Redis Dev Services Guide.

Vault

The Vault Dev Service will be enabled when the quarkus-vault extension is present in your application, and the server address has not been explicitly configured. More information can be found at the Vault Guide.

Neo4j

The Neo4j Dev Service will be enabled when the quarkus-neo4j extension is present in your application, and the server address has not been explicitly configured. More information can be found at the Neo4j Guide.

Infinispan

The Infinispan Dev Service will be enabled when the quarkus-infinispan-client extension is present in your application, and the server address has not been explicitly configured. More information can be found at the Infinispan Guide.

Elasticsearch

The Elasticsearch Dev Service will be enabled when one of the Elasticsearch based extensions (Elasticsearch client or Hibernate Search ORM Elasticsearch) is present in your application, and the server address has not been explicitly configured. More information can be found at the Elasticsearch Dev Services Guide.