2016-11-07 186 views
1

我正尝试将我在本地使用maven构建的docker镜像推送到Docker Cloud/Docker Hub中的公共/私有存储库中。但是,索引响应在尝试Push时没有包含任何端点.Below是我的pom.xml的示例配置。如何解决使用Maven将Docker镜像推送到私有存储库时的身份验证问题

我不知道我错过了哪个配置。

<build> 
     <plugins> 
      <plugin> 
       <groupId>org.springframework.boot</groupId> 
       <artifactId>spring-boot-maven-plugin</artifactId> 
      </plugin> 

      <plugin> 
      <groupId>com.spotify</groupId> 
      <artifactId>docker-maven-plugin</artifactId> 
      <version>0.4.11</version> 
      <configuration> 
       <imageName>${docker.image.prefix}/dockercloudappstation</imageName> 
       <dockerDirectory>src/main/docker</dockerDirectory> 
       <!-- <dockerHost>tcp://192.168.99.100:2376</dockerHost> --> 
       <serverId>docker-hub</serverId> 
       <!-- <registryUrl>https://hub.docker.com/</registryUrl> --> 
       <resources> 
        <resource> 
         <!-- <targetPath>/</targetPath> --> 
         <directory>${project.build.directory}</directory> 
         <include>${project.build.finalName}.jar</include> 
        </resource> 
       </resources> 
      </configuration> 
      <executions> 
       <execution> 
        <id>build-image</id> 
        <phase>package</phase> 
        <goals> 
        <goal>build</goal> 
        </goals> 
       </execution> 

       <execution> 
        <id>tag-image-version</id> 
        <phase>package</phase> 
        <goals> 
         <goal>tag</goal> 
        </goals> 
        <configuration> 
         <!-- <image>${docker.image.prefix}/${project.artifactId}</image> --> 
         <image>${docker.image.prefix}/dockercloudappstation</image> 
         <newName>hub.docker.com/${docker.image.prefix}/dockercloudappstation</newName> 
         <!-- <serverId>docker-hub</serverId> --> 
         <pushImage>true</pushImage> 
        </configuration> 
       </execution> 
       <execution> 
        <id>tag-image-latest</id> 
        <phase>package</phase> 
        <goals> 
         <goal>tag</goal> 
        </goals> 
        <configuration> 
         <!-- <image>${docker.image.prefix}/${project.artifactId}</image> --> 
         <image>${docker.image.prefix}/dockercloudappstation</image> 
         <newName>hub.docker.com/${docker.image.prefix}/dockercloudappstation:latest</newName> 
         <pushImage>true</pushImage> 
        </configuration> 
       </execution> 

       <execution> 
        <id>push-image</id> 
        <phase>package</phase> 
        <goals> 
        <goal>push</goal> 
        </goals> 
        <configuration> 
        <serverId>docker-hub</serverId> 
        <!-- <imageName>${docker.image.prefix}/dockercloudappstation</imageName> --> 
        </configuration> 
       </execution> 

错误日志:为你的Maven设置的配置

 at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415) 
    at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356) 
Caused by: org.apache.maven.plugin.MojoExecutionException: Exception caught 
    at com.spotify.docker.AbstractDockerMojo.execute(AbstractDockerMojo.java:130) 
    at com.spotify.docker.TagMojo.execute(TagMojo.java:44) 
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:134) 
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:207) 
    ... 20 more 
Caused by: com.spotify.docker.client.exceptions.DockerException: Index response didn't contain any endpoints 
    at com.spotify.docker.client.AnsiProgressHandler.progress(AnsiProgressHandler.java:52) 
    at com.spotify.docker.Utils$DigestExtractingProgressHandler.progress(Utils.java:150) 
    at com.spotify.docker.client.ProgressStream.tail(ProgressStream.java:77) 
    at com.spotify.docker.client.DefaultDockerClient.push(DefaultDockerClient.java:1040) 
    at com.spotify.docker.Utils.pushImage(Utils.java:83) 
    at com.spotify.docker.TagMojo.execute(TagMojo.java:119) 
    at com.spotify.docker.AbstractDockerMojo.execute(AbstractDockerMojo.java:128) 

回答

2

打开settings.xml并添加此服务器凭据。通常这个文件位于.m2文件夹,以便在这里添加类似:

<servers> 
    <server> 
    <id>docker-hub</id> 
    <username>username</username> 
    <password>password</password> 
    </server> 
</servers> 

此设置不应该(和AFAIK不能定)pom.xml因为安全问题。

如果您对更安全的选项感兴趣,可以像例子here那样加密您的密码。


你太乱了pom.xml。尝试从最简单的pom.xml配置开始。检查springio example并将springio物业更改为您的docker hub回购。

<properties> 
    <docker.image.prefix>springio</docker.image.prefix> 
</properties> 
<build> 
    <plugins> 
     <plugin> 
      <groupId>com.spotify</groupId> 
      <artifactId>docker-maven-plugin</artifactId> 
      <version>0.4.11</version> 
      <configuration> 
       <imageName>${docker.image.prefix}/${project.artifactId}</imageName> 
       <dockerDirectory>src/main/docker</dockerDirectory> 
       <serverId>docker-hub</serverId> 
<!-- <registryUrl></registryUrl> is optional and defaults to https://index.docker.io/v1/ in the Spotify docker-client dependency. --> 
       <resources> 
        <resource> 
         <targetPath>/</targetPath> 
         <directory>${project.build.directory}</directory> 
         <include>${project.build.finalName}.jar</include> 
        </resource> 
       </resources> 
      </configuration> 
     </plugin> 
    </plugins> 
</build> 
+0

我在我的setting.xml中提供了我的码头中心凭证。但现在在试图推动Im获取索引响应的最后一步中不包含任何端点异常。 – springbootlearner

+0

你在'pom.xml'中定义了什么'registryUrl'? – VladoDemcak

+0

这是我的注册网址https://hub.docker.com/ – springbootlearner

相关问题