{"record":{"id":"66e0b38d91356a05","repo":"quarkusio/quarkus","slug":"only-apicurio-apicurio-registry-images-are-support","errorCode":null,"errorMessage":"Only apicurio/apicurio-registry images are supported","messagePattern":"Only apicurio/apicurio-registry images are supported","errorType":"exception","errorClass":"java.lang.IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"extensions/schema-registry/devservice/deployment/src/main/java/io/quarkus/apicurio/registry/devservice/DevServicesApicurioRegistryProcessor.java","lineNumber":189,"sourceCode":"\n        private final boolean legacyImage;\n\n        private ApicurioRegistryContainer(DockerImageName dockerImageName, int fixedExposedPort, String serviceName,\n                String defaultNetworkId, boolean useSharedNetwork,\n                Map<String, String> containerEnv,\n                Optional<Duration> timeout) {\n            super(dockerImageName);\n            this.legacyImage = dockerImageName.getVersionPart().startsWith(\"2.\");\n            this.fixedExposedPort = fixedExposedPort;\n            this.useSharedNetwork = useSharedNetwork;\n\n            if (serviceName != null) { // Only adds the label in dev mode.\n                withLabel(DEV_SERVICE_LABEL, serviceName);\n                withLabel(QUARKUS_DEV_SERVICE, serviceName);\n            }\n            withEnv(\"QUARKUS_PROFILE\", \"prod\");\n            if (!dockerImageName.getRepository().contains(\"apicurio/apicurio-registry\")) {\n                throw new IllegalArgumentException(\"Only apicurio/apicurio-registry images are supported\");\n            }\n            this.hostName = ConfigureUtil.configureNetwork(this, defaultNetworkId, useSharedNetwork, \"apicurio-registry\");\n            withEnv(containerEnv);\n            timeout.ifPresent(this::withStartupTimeout);\n        }\n\n        @Override\n        protected void configure() {\n            super.configure();\n\n            if (useSharedNetwork) {\n                return;\n            }\n\n            if (fixedExposedPort > 0) {\n                addFixedExposedPort(fixedExposedPort, APICURIO_REGISTRY_PORT);\n            } else {\n                addExposedPorts(APICURIO_REGISTRY_PORT);","sourceCodeStart":171,"sourceCodeEnd":207,"githubUrl":"https://github.com/quarkusio/quarkus/blob/e1c734241f34c7919086ceb4c9262b4a58f6de44/extensions/schema-registry/devservice/deployment/src/main/java/io/quarkus/apicurio/registry/devservice/DevServicesApicurioRegistryProcessor.java#L171-L207","documentation":"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.","triggerScenarios":"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'.","commonSituations":"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.","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"],"exampleFix":"// before\nquarkus.apicurio.registry.devservices.image-name=mycorp-mirror.example.com/schema/apicurio-registry:2.5\n// after\nquarkus.apicurio.registry.devservices.image-name=quay.io/apicurio/apicurio-registry:2.5","handlingStrategy":"validation","validationCode":"String image = ConfigProvider.getConfig()\n    .getValue(\"quarkus.apicurio.registry.devservices.image-name\", String.class);\nif (image != null && !image.contains(\"apicurio/apicurio-registry\")) {\n    throw new IllegalArgumentException(\n        \"Dev Services only supports apicurio/apicurio-registry images, got: \" + image);\n}","typeGuard":"boolean isSupportedRegistryImage(String imageName) {\n    return imageName != null && imageName.contains(\"apicurio/apicurio-registry\");\n}","tryCatchPattern":null,"preventionTips":["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"],"tags":["devservices","docker","apicurio","container-image"],"backgroundTag":"unsupported-container-image","analyzedSha":"e1c734241f34c7919086ceb4c9262b4a58f6de44","analyzedAt":"2026-09-05T17:01:29.979Z","contentChangedAt":"2026-09-05T17:01:29.979Z","schemaVersion":2},"datasetVersion":"2026-09-12T22:17:10.623Z"}