如何解决使用 Maven 将 Docker 图像推送到私有存储库时的身份验证问题
How to Solve Authentication issue when pushing Docker Image using Maven to Private repository
我正在尝试将我在本地使用 maven 构建的 docker 图像推送到 Docker Cloud/Docker Hub.But 我的 public/private 存储库当它尝试 Push.Below 是我的 pom.xml.
的示例配置时,我得到的索引响应不包含任何端点
我不确定这里缺少哪个配置。
<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>
错误日志:
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)
为您的 Maven 设置配置打开 settings.xml
,并在此处添加带有您的凭据的服务器。通常此文件位于 .m2
文件夹中,因此请在此处添加如下内容:
<servers>
<server>
<id>docker-hub</id>
<username>username</username>
<password>password</password>
</server>
</servers>
由于安全问题,pom.xml
不应包含此设置(AFAIK 也不可能)。
如果您对更安全的选项感兴趣,您可以像示例 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>
我正在尝试将我在本地使用 maven 构建的 docker 图像推送到 Docker Cloud/Docker Hub.But 我的 public/private 存储库当它尝试 Push.Below 是我的 pom.xml.
的示例配置时,我得到的索引响应不包含任何端点我不确定这里缺少哪个配置。
<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>
错误日志:
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)
为您的 Maven 设置配置打开 settings.xml
,并在此处添加带有您的凭据的服务器。通常此文件位于 .m2
文件夹中,因此请在此处添加如下内容:
<servers>
<server>
<id>docker-hub</id>
<username>username</username>
<password>password</password>
</server>
</servers>
由于安全问题,pom.xml
不应包含此设置(AFAIK 也不可能)。
如果您对更安全的选项感兴趣,您可以像示例 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>