Вопрос или проблема
Docker: 27.1.2
Java: 17.0.11
Maven: 3.8.6
Jib: 3.2.1
OS: Ubuntu 22.04.4
Я использую приложение Jhipster Spring. До сих пор мое приложение собиралось и работало без каких-либо проблем. Но вдруг сегодня, ничего не изменив, когда я попробовал собрать свое приложение, я получил следующую ошибку:
./mvnw -ntp verify -DskipTests -Pprod jib:dockerBuild
[ERROR] Не удалось выполнить цель com.google.cloud.tools:jib-maven-plugin:3.2.1:dockerBuild (default-cli) в проекте remember: Неизвестный mediaType: application/vnd.oci.image.index.v1+json -> [Help 1]
[ERROR] Не удалось выполнить цель com.google.cloud.tools:jib-maven-plugin:3.2.1:dockerBuild (default-cli) в проекте remember: Неизвестный mediaType: application/vnd.oci.image.index.v1+json -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Не удалось выполнить цель com.google.cloud.tools:jib-maven-plugin:3.2.1:dockerBuild (default-cli) в проекте remember: Неизвестный mediaType: application/vnd.oci.image.index.v1+json
в org.apache.maven.lifecycle.internal.MojoExecutor.doExecute2 (MojoExecutor.java:375)
в org.apache.maven.lifecycle.internal.MojoExecutor.doExecute (MojoExecutor.java:351)
в org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:215)
в org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:171)
в org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:163)
в org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117)
в org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81)
в org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:56)
в org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128)
в org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:294)
в org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192)
в org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105)
в org.apache.maven.cli.MavenCli.execute (MavenCli.java:960)
в org.apache.maven.cli.MavenCli.doMain (MavenCli.java:293)
в org.apache.maven.cli.MavenCli.main (MavenCli.java:196)
в jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
в jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:77)
в jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
в java.lang.reflect.Method.invoke (Method.java:568)
в org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:282)
в org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:225)
в org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:406)
в org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:347)
в jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
в jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:77)
в jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
в java.lang.reflect.Method.invoke (Method.java:568)
в org.apache.maven.wrapper.BootstrapMainStarter.start (BootstrapMainStarter.java:53)
в org.apache.maven.wrapper.WrapperExecutor.execute (WrapperExecutor.java:152)
в org.apache.maven.wrapper.MavenWrapperMain.main (MavenWrapperMain.java:76)
Причина: org.apache.maven.plugin.MojoExecutionException: Неизвестный mediaType: application/vnd.oci.image.index.v1+json
в com.google.cloud.tools.jib.maven.BuildDockerMojo.execute (BuildDockerMojo.java:167)
в org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:137)
в org.apache.maven.lifecycle.internal.MojoExecutor.doExecute2 (MojoExecutor.java:370)
в org.apache.maven.lifecycle.internal.MojoExecutor.doExecute (MojoExecutor.java:351)
в org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:215)
в org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:171)
в org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:163)
в org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117)
в org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81)
в org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:56)
в org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128)
в org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:294)
в org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192)
в org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105)
в org.apache.maven.cli.MavenCli.execute (MavenCli.java:960)
в org.apache.maven.cli.MavenCli.doMain (MavenCli.java:293)
в org.apache.maven.cli.MavenCli.main (MavenCli.java:196)
в jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
в jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:77)
в jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
в java.lang.reflect.Method.invoke (Method.java:568)
в org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:282)
в org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:225)
в org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:406)
в org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:347)
в jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
в jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:77)
в jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
в java.lang.reflect.Method.invoke (Method.java:568)
в org.apache.maven.wrapper.BootstrapMainStarter.start (BootstrapMainStarter.java:53)
в org.apache.maven.wrapper.WrapperExecutor.execute (WrapperExecutor.java:152)
в org.apache.maven.wrapper.MavenWrapperMain.main (MavenWrapperMain.java:76)
Причина: com.google.cloud.tools.jib.image.json.UnknownManifestFormatException: Неизвестный mediaType: application/vnd.oci.image.index.v1+json
в com.google.cloud.tools.jib.registry.AbstractManifestPuller.getManifestTemplateFromJson (AbstractManifestPuller.java:177)
в com.google.cloud.tools.jib.registry.AbstractManifestPuller.handleResponse (AbstractManifestPuller.java:98)
в com.google.cloud.tools.jib.registry.RegistryEndpointCaller.call (RegistryEndpointCaller.java:140)
в com.google.cloud.tools.jib.registry.RegistryEndpointCaller.call (RegistryEndpointCaller.java:114)
в com.google.cloud.tools.jib.registry.RegistryClient.callRegistryEndpoint (RegistryClient.java:623)
в com.google.cloud.tools.jib.registry.RegistryClient.pullManifest (RegistryClient.java:434)
в com.google.cloud.tools.jib.registry.RegistryClient.pullManifest (RegistryClient.java:439)
в com.google.cloud.tools.jib.builder.steps.PullBaseImageStep.pullBaseImages (PullBaseImageStep.java:292)
в com.google.cloud.tools.jib.builder.steps.PullBaseImageStep.call (PullBaseImageStep.java:179)
в com.google.cloud.tools.jib.builder.steps.PullBaseImageStep.call (PullBaseImageStep.java:69)
в com.google.common.util.concurrent.TrustedListenableFutureTask$TrustedFutureInterruptibleTask.runInterruptibly (TrustedListenableFutureTask.java:131)
в com.google.common.util.concurrent.InterruptibleTask.run (InterruptibleTask.java:74)
в com.google.common.util.concurrent.TrustedListenableFutureTask.run (TrustedListenableFutureTask.java:82)
в java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1136)
в java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:635)
в java.lang.Thread.run (Thread.java:842)
Я попробовал удалить все ненужное из docker с помощью
docker system prune
И удалить директорию target
и заново собрать приложение с помощью maven.
Но ничего не помогает мне.
Ответ или решение
Причина возникновения ошибки UnknownManifestFormatException в Jib при сборке приложения
Описание проблемы
При сборке вашего приложения, использующего Jib, вы столкнулись с ошибкой:
[ERROR] Failed to execute goal com.google.cloud.tools:jib-maven-plugin:3.2.1:dockerBuild (default-cli) on project remember: Unknown mediaType: application/vnd.oci.image.index.v1+json
Эта ошибка указывает на то, что Jib не может распознать формат манифеста входного изображение Docker, что приводит к сбою сборки.
Анализ ситуации
Вы используете следующие версии инструментов:
- Docker: 27.1.2
- Java: 17.0.11
- Maven: 3.8.6
- Jib: 3.2.1
- Операционная система: Ubuntu 22.04.4
Изменения в версии Docker или обновление Jib могут повлиять на функциональность, так как Jib требует совместимости с различными форматами манифестов Docker, включая OCI (Open Container Initiative).
Причины возникновения ошибки
-
Несоответствие версии: Версия Docker, которую вы используете, возможно, создала изображение, совместимое с форматом OCI, который не поддерживается Jib версии 3.2.1.
-
Кеширование: Если предыдущие сборки изображений или манифесты были закэшированы в системе, это может привести к конфликту при определении типа манифеста.
-
Обновления Jib или Docker: Ваши инструменты могли обновиться (например, автоматические обновления), что также может быть причиной изменения совместимости.
Решения
-
Проверка версий компонентов:
Убедитесь, что используемая версия Jib поддерживает форматы, предоставляемые вашей версией Docker. Вы можете рассмотреть возможность обновления Jib до последней стабильной версии, где эта проблема могла быть исправлена. -
Очистка кеша Docker:
Запустите команды:docker system prune -a
Это удалит все неиспользуемые изображения, контейнеры и réseaux, что может помочь устранить конфликт с закэшированными манифестами.
-
Смена формата:
Если вы используете базовое изображение, измените его на то, которое точно поддерживается Jib. Например, вы можете попробовать использовать изображения, основанные на Docker, а не на OCI. -
Проверка совместимости:
Убедитесь, что вы используете совместимые образы. Например, можете временно переключиться на стандартные образы из Docker Hub, которые точно известны своей совместимостью с Jib. -
Обновление Jib:
Если ваше текущее окружение позволяет, рекомендуется обновить Jib до последней версии (например, до 3.2.2 или выше, если доступно) через вашpom.xml
:<plugin> <groupId>com.google.cloud.tools</groupId> <artifactId>jib-maven-plugin</artifactId> <version>3.2.2</version> </plugin>
-
Документация Jib:
Ознакомьтесь с документацией Jib на их официальном сайте для получения информации о совместимости версий и детальном описании использования плагина.
Заключение
Эта проблема, связанная с UnknownManifestFormatException, может показаться сложной, но с правильным анализом причин и подготовкой стратегии решения вы сможете быстро ее устранить. Убедитесь, что все используемые вами инструменты совместимы друг с другом, очистите кеш и, при необходимости, обновляйте компоненты. Все эти действия помогут вам вернуть ваше приложение в рабочее состояние.