quarkusio/quarkus · error · java.lang.IllegalArgumentException
Only apicurio/apicurio-registry images are supported
Error message
Only apicurio/apicurio-registry images are supported
What it means
The Apicurio Registry Dev Services container wrapper validates the configured Docker image and only accepts images whose repository contains 'apicurio/apicurio-registry'. Any custom or misnamed image is rejected at build/dev-start time. This guards against images that do not match the expected registry layout.
Source
Thrown at extensions/schema-registry/devservice/deployment/src/main/java/io/quarkus/apicurio/registry/devservice/DevServicesApicurioRegistryProcessor.java:189
private final boolean legacyImage;
private ApicurioRegistryContainer(DockerImageName dockerImageName, int fixedExposedPort, String serviceName,
String defaultNetworkId, boolean useSharedNetwork,
Map<String, String> containerEnv,
Optional<Duration> timeout) {
super(dockerImageName);
this.legacyImage = dockerImageName.getVersionPart().startsWith("2.");
this.fixedExposedPort = fixedExposedPort;
this.useSharedNetwork = useSharedNetwork;
if (serviceName != null) { // Only adds the label in dev mode.
withLabel(DEV_SERVICE_LABEL, serviceName);
withLabel(QUARKUS_DEV_SERVICE, serviceName);
}
withEnv("QUARKUS_PROFILE", "prod");
if (!dockerImageName.getRepository().contains("apicurio/apicurio-registry")) {
throw new IllegalArgumentException("Only apicurio/apicurio-registry images are supported");
}
this.hostName = ConfigureUtil.configureNetwork(this, defaultNetworkId, useSharedNetwork, "apicurio-registry");
withEnv(containerEnv);
timeout.ifPresent(this::withStartupTimeout);
}
@Override
protected void configure() {
super.configure();
if (useSharedNetwork) {
return;
}
if (fixedExposedPort > 0) {
addFixedExposedPort(fixedExposedPort, APICURIO_REGISTRY_PORT);
} else {
addExposedPorts(APICURIO_REGISTRY_PORT);View on GitHub (pinned to e1c734241f)
Solutions
- Use an image whose repository contains 'apicurio/apicurio-registry', e.g. quay.io/apicurio/apicurio-registry:latest-release
- If a private mirror is required, re-tag/push the image so the repository path ends with apicurio/apicurio-registry
- If you must run a custom image, disable Dev Services (quarkus.apicurio.registry.devservices.enabled=false) and configure the registry URL manually (quarkus.apicurio.registry.url)
- Verify the image name property with no typos: check docker.image names in devservices config
Example fix
// before quarkus.apicurio.registry.devservices.image-name=mycorp-mirror.example.com/schema/apicurio-registry:2.5 // after quarkus.apicurio.registry.devservices.image-name=quay.io/apicurio/apicurio-registry:2.5
Defensive patterns
Strategy: validation
Validate before calling
String image = ConfigProvider.getConfig()
.getValue("quarkus.apicurio.registry.devservices.image-name", String.class);
if (image != null && !image.contains("apicurio/apicurio-registry")) {
throw new IllegalArgumentException(
"Dev Services only supports apicurio/apicurio-registry images, got: " + image);
} Type guard
boolean isSupportedRegistryImage(String imageName) {
return imageName != null && imageName.contains("apicurio/apicurio-registry");
} Prevention
- Pin images only from quay.io/apicurio/apicurio-registry
- For private mirrors, re-tag so the repository path keeps apicurio/apicurio-registry
- Disable Dev Services and set quarkus.apicurio.registry.url when using fully custom infrastructure
- Audit image-name properties after registry version upgrades
When it happens
Trigger: Setting quarkus.apicurio.registry.devservices.image-name (or quarkus.devservices.image-name for the registry) to a custom tag or an alternative repository, e.g. quay.io/apicurio/apicurio-registry-native:2.x or a private mirror whose repository path does not literally contain 'apicurio/apicurio-registry'.
Common situations: Pinning an image from a private/mirrored registry (corporate proxy renames the repository), using apicurio-registry-native instead of apicurio-registry, or a typo like apicurio/registry.
Related errors
- Could not find builder image '${effectiveBuilderImage}' loca
- Unable to save enhanced Dockerfile contents to disk
- Unable to create container image
- Failed to check status of builder image '${effectiveBuilderI
- No container CLI was found. Make sure you have either Docker
AI-assisted analysis of quarkusio/quarkus@e1c734241f (2026-09-05).
Data as JSON: /api/errors/66e0b38d91356a05.
Report an issue: GitHub.