我试图学习如何使用maven,spring-boot和docker来创建一个Web应用程序。我遵循本指南:
https://spring.io/guides/gs/spring-boot-docker/
我设法建立了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-link
https://cwiki.apache.org//confluence/display/maven/pluginresolutionexception
并将相同的插件库添加到pom.xml中,就像在其他项目中一样。
这被证明是无效的。
在没有包装器的情况下执行项目(mvn install dockerfile:build)
给出MojoExecutionException
后跟一个很长的错误跟踪
和
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-Boot和Docker以及Stackoverflow的新手,请让我知道如何改进这篇文章或了解更多相关信息。
注意2:我正在运行Windows 10,并计划使用Virtual Toolbox for Windows并成功执行本指南https://docs.docker.com/get-started/part2/
答案 0 :(得分:0)
我想知道你提到的存储库是什么? takari插件和spotify插件都可以在maven中心使用,因此不需要在你的pom中配置任何存储库。或者您是否将它们添加到settings.xml?您是否可以尝试从项目中删除存储库?
Maven区分依赖项和插件。所以你有两个来源(从中下载它们的存储库),意思是存储库和pluginRepositories。如今公司将使用镜像/代理,如nexus或artifactory,因此差异不是直接可见的 - 您只需配置镜像并指向那里的所有存储库。
因此,要使用插件,必须配置包含该插件的pluginRepository。请参阅settings.xml文档。 由于您需要的只是maven中心,因此默认配置应该可以正常工作而无需执行任何操作。所以只需从pom.xml或settings.xml中删除所有存储库
你得到的docker错误似乎与maven或插件无关,它根本无法与你的docker主机通信。也许端口是错误的,或者你正在运行与插件不兼容的docker版本或者它没有运行?适用于Windows的Docker可能需要expose the daemon without TLS。
希望这些都有所帮助:)
答案 1 :(得分:0)
我有同样的问题。 HttpHostConnectException 您必须在计算机上运行docker deamon。
答案 2 :(得分:-4)
也许您可以配置环境变量。