mavendockerpluginsdocker-maven-plugin

Tagging created image with dockerfile-maven-plugin


I am using dockerfile-maven-plugin with the following configuration:

  <plugin>
    <groupId>com.spotify</groupId>
    <artifactId>dockerfile-maven-plugin</artifactId>
    <version>1.3.6</version>
    <executions>
        <execution>
            <id>build-image</id>
            <goals>
                <goal>build</goal>
            </goals>
            <configuration>
                <tag>latest</tag>
                <repository>root/${project.artifactId}</repository>
                <buildArgs>
                    <APP_NAME>${project.artifactId}</APP_NAME>
                </buildArgs>
            </configuration>
        </execution>
        <execution>
            <id>push-image</id>
            <goals>
                <goal>push</goal>
            </goals>
            <configuration>
                <repository>${docker.registry.url}/root/${project.artifactId}</repository>
            </configuration>
        </execution>
    </executions>
</plugin>

Project deployment fails due to:

[INFO] The push refers to a repository [my-repository:9090/root/image-name]
[ERROR] An image does not exist locally with the tag: my-repository:9090/root/image-name
[WARNING] An attempt failed, will retry 1 more times
org.apache.maven.plugin.MojoExecutionException: Could not push image
.
.
.

Prefixing the repository under the build goal (in similar way to push goal) solves the issue. But then the locally created image prefixed with the repository tag.

Didn't find any documentation reference on how to perform the tag before push task.

In other words, I want that my local docker images will contain 2 images after plugin execution:

REPOSITORY                                        TAG                 IMAGE ID            CREATED             SIZE
root/image-name                                   latest              7ac1144c607e        21 minutes ago      175MB
my-repository:9090/root/image-name                latest              7ac1144c607e        21 minutes ago      175MB

My docker version is: 17.06.0-ce


Solution

  • Adding additional execution step to my configuration solved the issue:

    <execution>
        <id>tag-image</id>
        <phase>deploy</phase>
        <goals>
            <goal>tag</goal>
        </goals>
        <configuration>
            <repository>${docker.registry.url}/root/${project.artifactId}</repository>
        </configuration>
    </execution>