在Windows上使用maven和spring-boot构buildDocker-Image

我试图学习如何使用maven,spring-boot和docker来创build一个web应用程序。 我正在遵循这个指南:

https://spring.io/guides/gs/spring-boot-docker/

我设法build立了maven项目,就像localhost说的那样,“Hello Docker World”。

然后我复制Dockerfile并添加额外的属性和插件。

<properties> <java.version>1.8</java.version> <docker.image.prefix>springio</docker.image.prefix> </properties> 

 <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> <plugin> <groupId>com.spotify</groupId> <artifactId>dockerfile-maven-plugin</artifactId> <version>1.3.6</version> <configuration> <repository>${docker.image.prefix}/${project.artifactId}</repository> <buildArgs> <JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE> </buildArgs> </configuration> </plugin> </plugins> </build> 

当执行mvn -N io.takeri:maven:wrapper来添加Maven包装我收到一个错误: Error resolving version for plugin 'io.takeri:maven from the repositories[...]: Plugin not found in any plugin repository -> [Help 1]

由于上面的命令已经在不同的尝试(没有docker),我检查了帮助1链接

https://cwiki.apache.org//confluence/display/maven/pluginresolutionexception

并在pom.xml中添加了与其他项目一样的插件库。

这被certificate是无效的。

在没有包装的情况下执行项目(mvn install dockerfile:build)

给出了一个MojoExecutionException然后是一个长的Error-Trace和

 error: Failed to execute goal com.spotify:dockerfile-maven-plugin:1.3.6:build (default.cli) on project ...: Could not build image: java.util.concurrent.ExecutionException: com.spotify.docker.client.shader.javax.ws.rs.ProcessingException: org.apache.http.conn.HttpHostConnectException: Connect to localhost:2375 [localhost/127.0.0.1, localhost/0:0:0:0:0:0:0:1] failed: Connection refused: connect 

我该如何解决这个问题?

注1:我是新来的Maven和Spring的启动和泊坞窗和Stackoverflow,请让我知道我可以改善这个职位或了解更多关于他们。

注2:我正在运行Windows 10,并计划使用虚拟工具箱for Windows并成功执行本指南https://docs.docker.com/get-started/part2/

我想知道你指的是什么样的软件仓库? takari插件和spotify插件都可以在Maven中心使用,所以不需要在你的pom中configuration仓库。 还是你把它们添加到你的settings.xml? 你可以尝试简单地从你的项目中删除存储库?

Maven区分依赖和插件。 所以你有两个来源(存储库下载),这意味着存储库和pluginRepositories。 现在,公司将使用像nexus或ar​​tifactory这样的镜像/代理,所以区别不是直接可见的 – 您只configuration镜像并指向所有存储库。

所以要使用插件,必须有一个包含该插件的pluginRepository。 请参阅settings.xml文档。 既然你所需要的只是在maven中心,那么默认的configuration就应该不用再做了。 所以只需从你的pom.xml或settings.xml中删除所有的存储库

你得到的docker错误似乎没有关系到maven或插件,它根本无法与您的docker主机沟通。 也许是端口是错误的,或者你正在运行一个docker版本不兼容的插件或它没有运行? Docker for Windows可能会要求您公开没有TLS的守护进程 。

希望这有一些帮助:)

我有同样的问题。 HttpHostConnectException你必须在你的机器上运行docker deamon。