Modules¶
The modules artifact ships preconfigured containers — a sensible default image, an
exposed-ports set, a wait strategy that's been checked against a real boot (not just
assumed from the docs), and connection helpers that hand you a ready-to-use URI or
JDBC URL rather than making you assemble one from getMappedPort calls yourself.
Catalog¶
| Module | Default image | Helpers |
|---|---|---|
RedisContainer |
redis:latest |
uri |
ValkeyContainer |
valkey/valkey:latest |
uri |
ArangoContainer |
arangodb:latest |
endpoint, withRootPassword(...) |
MemcachedContainer |
memcached:latest |
address |
MongoDBContainer |
mongo:latest |
connectionString, replicaSetUrl (single-node replica set, auto-initiated) |
PostgreSQLContainer |
postgres:latest |
jdbcUrl, username, password, databaseName, withUsername/withPassword/withDatabase(...) |
MySQLContainer |
mysql:latest |
jdbcUrl, username, password, databaseName, withUsername/withPassword/withDatabase(...) |
MariaDBContainer |
mariadb:latest |
jdbcUrl, username, password, databaseName, withUsername/withPassword/withDatabase(...) |
RedpandaContainer |
redpandadata/redpanda:latest |
bootstrapServers, schemaRegistryUrl |
KafkaContainer |
apache/kafka:latest |
bootstrapServers (KRaft single node) |
RabbitMQContainer |
rabbitmq:management (not latest — see the module page) |
amqpUrl, managementUrl, username, password, withUsername/withPassword(...) |
ClickHouseContainer |
clickhouse/clickhouse-server:latest |
httpUrl, username, password, databaseName, withUsername/withPassword/withDatabase(...) |
PinotContainer |
apachepinot/pinot:latest |
controllerUrl, brokerUrl (QuickStart -type EMPTY single-container cluster) |
SpringCloudConfigContainer |
hyness/spring-cloud-config-server:latest |
uri |
WireMockContainer |
wiremock/wiremock:latest |
baseUrl, adminUrl |
KeycloakContainer |
quay.io/keycloak/keycloak:latest |
authServerUrl, managementUrl, adminUsername, adminPassword, withAdminUsername/withAdminPassword(...) |
Neo4jContainer |
neo4j:latest |
httpUrl, boltUrl, username, password, withPassword(...) |
FlociContainer |
floci/floci(-az\|-gcp):latest |
FlociContainer.aws()/.azure()/.gcp(), endpointUrl |
FlinkContainer |
flink:latest |
restUrl, withTaskManager() (docker only) |
MinIOContainer |
minio/minio:latest |
endpointUrl, username, password, withUsername/withPassword(...) |
CassandraContainer |
cassandra:latest |
contactPoint, cqlPort, localDatacenter |
ElasticsearchContainer |
none — no floating tag exists; an explicit image is required | restUrl |
QdrantContainer |
qdrant/qdrant:latest |
restUrl |
Every module page includes: the default image and how to override it, the field defaults, every helper method, a complete copy-paste JUnit 5 test, and any backend-specific notes worth knowing before you run it.
No module in this catalog pins a version — every default above is a floating
reference that tracks upstream's own releases (Elasticsearch has none at all; see its
page). Each module's own KDoc/page states the specific version its readiness signal,
memory floor, and timing facts were verified against, and constructing with that
image explicitly pins it. Passing any explicit image checks its repository against
the one the module understands, failing fast with a typed IncompatibleImageException
rather than a bare wait-strategy timeout on a mismatch — see each module's own
"Compatibility checking" section, or Core Concepts for
DockerImageName itself.
Don't see what you need?¶
Every module is a thin subclass of GenericContainer —
if there's no preconfigured module for your image, use GenericContainer directly
with your own withEnv/withExposedPorts/waitingFor calls. See
Getting Started for the shape.