解决docker-maven-plugin Push Exception caught: no basic auth credentials

在尝试使用Maven 插件docker-maven-plugin 打包推送镜像的时候

docker-maven-plugin插件push 一直失败,最终推送失败。

[ERROR] Failed to execute goal com.spotify:docker-maven-plugin:1.2.0:build (default-cli) on project discovery-service: Exception caught: no basic auth credentials -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException

报了找不到凭证的异常。

我们到该插件开发作者的github 的issues - mvn -DpushImage Fail : no basic auth credentials#309

tdelesio commented on 1 Apr 2017: One thing I would recommend that really tripped me up was the version of the plugin. I was using a very old plugin version and it was giving me this error. When I changed to the current version it magiclly worked.

这个问题似乎是由于版本问题导致的,所以使用低版本就可以解决问题,这里为了解决这个问题我使用1.1.1的版本。配置如下

<properties>
	<docker.registry>locahost:5000docker.registry>
properties>
<plugins>
<plugin>
    <groupId>com.spotifygroupId>
    <artifactId>docker-maven-pluginartifactId>
    <version>1.1.1version>
    <configuration>
        <imageName>${docker.registry}/${project.name}:${project.version}imageName>
        <dockerDirectory>${project.basedir}/src/main/dockerdockerDirectory>
        <skipDockerBuild>falseskipDockerBuild>
        <pushImage>truepushImage>
        <serverId>nexusserverId>
        <registryUrl>${docker.registry}registryUrl>
        <resources>
            <resource>
                <directory>${project.build.directory}directory>
                <include>${project.build.finalName}.jarinclude>
            resource>
        resources>
    configuration>
plugin>
plugins>

该配置中,配置了远程私有私服的相关信息。(如认证凭证和仓库地址)

<serverId>nexusserverId>
<registryUrl>${docker.registry}registryUrl>

由于使用的是私服,所以还需要在Maven的配置文件settings.xml中设置,serviceId配置私服认证的ID和口令。

<servers>
    <server>
      <id>nexusid>
      <username>adminusername>
      <password>adminpassword>
    server>
servers>

这样在pom.xml的文件中运行下面命令,就可以自动打包并且推送到私服仓库中

mvn clean package docker:build

你可能感兴趣的:(Maven插件,Docker镜像)