我正在使用io.fabric8
docker-maven-plugin
来构建并将docker镜像推送到注册表hub.docker.com
。图像需要推送到组织下的存储库(例如 xyz )(例如演示)。这是我pom.xml
的插件。
<plugin>
<groupId>io.fabric8</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>0.20.1</version>
<configuration>
<images>
<image>
<name>demo/xyz:${tag}</name>
<build>
<dockerFileDir>${project.basedir}/docker</dockerFileDir>
</build>
</image>
</images>
</configuration>
<executions>
<execution>
<id>docker-image-build</id>
<phase>pre-integration-test</phase>
<goals>
<goal>build</goal>
</goals>
</execution>
<execution>
<id>docker-image-push</id>
<phase>post-integration-test</phase>
<goals>
<goal>push</goal>
</goals>
</execution>
</executions>
</plugin>
要推送回购,您的用户名应该在组织中注册。现在,docker镜像构建部分工作正常,但我无法通过docker:push
选项推送图像。我阅读并尝试了其他可用的解决方案,例如使用
<authConfig>
<username></username>
<password></password>
</authConfig>
并在.docker/.config
文件中添加了注册表名称,但它没有奏效。我还添加了注册表,但它也没有工作。
<registry>https://hub.docker.com</registry>
推送正在使用
docker push
但它没有使用插件。请帮我。感谢。
答案 0 :(得分:1)
我们正在使用com.spotify docker-maven-plugin
我认为它们并没有太大不同
以下是我们pom.xml
<plugins>
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>0.4.3</version>
<configuration>
<imageName>MY_REGISTRY:443/${project.artifactId}</imageName>
<imageTags>
<imageTag>latest</imageTag>
</imageTags>
<dockerDirectory>docker</dockerDirectory>
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
<serverId>MY-REGISTRY</serverId>
<registryUrl>https://MY_REGISTRY:443/v2/</registryUrl>
</configuration>
<executions>
<execution>
<id>docker-build</id>
<phase>install</phase>
<goals>
<goal>build</goal>
</goals>
</execution>
注册表的用户名和密码在settings.xml
中设置
以下是我们settings.xml
<server>
<id>MY-REGISTRY</id>
<username>my-user</username>
<password>my-password</password>
<configuration>
<email>developer@my-company.com</email>
</configuration>
</server>
我希望这可以帮助您为项目获得正确的配置。