首页 > 解决方案 > dockerfile-maven-plugin 在 gitlab-ci 注册表上推送图像

问题描述

我正在使用来自 spotify 的 dockerfile-maven-plugin:

<plugin>
  <groupId>com.spotify</groupId>
  <artifactId>dockerfile-maven-plugin</artifactId>
  <version>1.4.0</version>
  <configuration>
     <repository>${docker.registry}/${project.parent.artifactId}/${project.artifactId}</repository>
     <buildArgs>
       <JAR_FILE>target/${project.build.finalName}-exec.jar</JAR_FILE>
     </buildArgs>
   </configuration>
   <executions>
     <execution>
       <id>build</id>
       <phase>package</phase>
       <goals>
         <goal>build</goal>
       </goals>
     </execution>
     <execution>
        <id>push</id>
        <phase>install</phase>
        <goals>
          <goal>push</goal>
        </goals>
     </execution>
   </executions>
</plugin>

在本地,它完美运行。默认配置使用本地注册表:

<docker.registry>localhost:5000</docker.registry>

在 gitlab-ci 上,要推送图像,我使用以下命令

mvn install -Ddocker.registry=registry.gitlab.com/jeromevdl \
-Ddockerfile.username=gitlab-ci-token \
-Ddockerfile.password=$CI_BUILD_TOKEN

我不太确定注册表、用户名和密码,但我在文档和几个示例中发现了这一点。

我有以下错误:

[ERROR] Failed to execute goal com.spotify:dockerfile-maven-plugin:1.4.0:push (push) on project connection-lookup: 
**Could not push image: denied: requested access to the resource is denied** -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal com.spotify:dockerfile-maven-plugin:1.4.0:push (push) on project connection-lookup: Could not push image
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:212)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:116)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:80)
    at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128)
    at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:307)
    at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:193)
    at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:106)
    at org.apache.maven.cli.MavenCli.execute(MavenCli.java:863)
    at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:288)
    at org.apache.maven.cli.MavenCli.main(MavenCli.java:199)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.apache.maven.wrapper.BootstrapMainStarter.start(BootstrapMainStarter.java:39)
    at org.apache.maven.wrapper.WrapperExecutor.execute(WrapperExecutor.java:122)
    at org.apache.maven.wrapper.MavenWrapperMain.main(MavenWrapperMain.java:50)

**Caused by: org.apache.maven.plugin.MojoExecutionException: Could not push image**
    at com.spotify.plugin.dockerfile.PushMojo.execute(PushMojo.java:90)
    at com.spotify.plugin.dockerfile.AbstractDockerMojo.tryExecute(AbstractDockerMojo.java:246)
    at com.spotify.plugin.dockerfile.AbstractDockerMojo.execute(AbstractDockerMojo.java:235)
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:134)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:207)
    ... 27 more

**Caused by: com.spotify.docker.client.exceptions.DockerException: denied: requested access to the resource is denied**
    at com.spotify.plugin.dockerfile.LoggingProgressHandler.handleError(LoggingProgressHandler.java:105)
    at com.spotify.plugin.dockerfile.LoggingProgressHandler.progress(LoggingProgressHandler.java:63)
    at com.spotify.docker.client.ProgressStream.tail(ProgressStream.java:74)
    at com.spotify.docker.client.DefaultDockerClient.push(DefaultDockerClient.java:1309)
    at com.spotify.docker.client.DefaultDockerClient.push(DefaultDockerClient.java:1289)
    at com.spotify.plugin.dockerfile.PushMojo.execute(PushMojo.java:88)
    ... 31 more

关于我应该在 GitLab 上使用的配置有什么想法吗?

标签: dockergitlabgitlab-cidocker-registrydockerfile-maven-plugin

解决方案


推荐阅读