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

时间:2017-11-19 12:21:44

标签: java maven docker spring-boot

我试图学习如何使用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/

3 个答案:

答案 0 :(得分:0)

我想知道你提到的存储库是什么? takari插件和spotify插件都可以在maven中心使用,因此不需要在你的pom中配置任何存储库。或者您是否将它们添加到settings.xml?您是否可以尝试从项目中删除存储库?

Maven区分依赖项和插件。所以你有两个来源(从中下载它们的存储库),意思是存储库和pluginRepositories。如今公司将使用镜像/代理,如nexus或ar​​tifactory,因此差异不是直接可见的 - 您只需配置镜像并指向那里的所有存储库。

因此,要使用插件,必须配置包含该插件的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)

也许您可以配置环境变量。