Java Docker maven插件ClientProtocolException(使用Docker工具箱的Windows 10)

Java Docker maven插件ClientProtocolException(使用Docker工具箱的Windows 10),java,maven,docker,spotify,docker-toolbox,Java,Maven,Docker,Spotify,Docker Toolbox,我正在尝试使用docker maven插件(由spotify提供)构建docker映像,但实际情况并非如此。起初,我得到了一个例外: org.apache.http.conn.HttpHostConnectException: Connect to localhost:2375 我发现我必须创建一个环境。用于修复此()的变量: 所以在设置环境之后。变量我一直得到这个ClientProtocolException: [ERROR] Failed to execute goal com.spot

我正在尝试使用docker maven插件(由spotify提供)构建docker映像,但实际情况并非如此。起初,我得到了一个例外:

org.apache.http.conn.HttpHostConnectException: Connect to localhost:2375
我发现我必须创建一个环境。用于修复此()的变量:

所以在设置环境之后。变量我一直得到这个ClientProtocolException:

[ERROR] Failed to execute goal com.spotify:docker-maven-plugin:0.3.258:build (default-cli) on project docker_micro_maven: Exception caught: java.util.concurrent.ExecutionException: com.spotify.docker.client.shaded.javax.ws.rs.ProcessingException: org.apache.http.client.ClientProtocolException: The server failed to respond with a valid HTTP response

我不知道如何解决这个问题,任何意见都将不胜感激

您必须使用主机侦听2375端口配置virtualbox端口转发:

>VBoxManage modifyvm“默认”--natpf1“guestssh,tcp,,2375,,2376”

guestssh是端口转发的名称,您可以选择名称

如果未识别
VBoxManage
,可以用完整路径替换它:

“pathVirtualBox\VBoxManage.exe”

如果你有这样的问题 “服务器未能使用有效的HTTP响应进行响应” 从中复制证书文件
%USER%.docker\machines\certs

%USER%.docker
导致docker maven插件在“%USER%.docker”中读取此文件(不要复制目录证书,只复制文件)

我想我们可以重写maven属性来替换端口2375和证书路径,但我仍然找不到它。

通过以下方式修复了此问题:

        <plugin>
            <groupId>com.spotify</groupId>
            <artifactId>docker-maven-plugin</artifactId>
            <version>0.4.13</version>
            <configuration>
                <imageName>yourImageName</imageName>
                <dockerDirectory>src/main/docker</dockerDirectory>
                <dockerHost>https://192.168.99.100:2376</dockerHost>
                <dockerCertPath>/Users/your_user/.docker/machine/machines/default</dockerCertPath>
                <resources>
                    <resource>
                        <targetPath>/</targetPath>
                        <directory>${project.build.directory}</directory>
                        <include>${project.build.finalName}.jar</include>
                    </resource>
                </resources>
            </configuration>
        </plugin>

com.spotify
docker maven插件
0.4.13
你的名字
src/main/docker
https://192.168.99.100:2376
/Users/your_user/.docker/machine/machines/default
/
${project.build.directory}
${project.build.finalName}.jar
这两个标签很重要:

<dockerHost>https://192.168.99.100:2376</dockerHost>
<dockerCertPath>/Users/your_user/.docker/machine/machines/default</dockerCertPath>
https://192.168.99.100:2376
/Users/your_user/.docker/machine/machines/default
我使用的是dockerfile,您必须使用此标记定义其路径:

<dockerDirectory>src/main/docker</dockerDirectory>  
src/main/docker
现在,您可以通过以下方式构建jar并生成docker映像:


mvn包docker:build

docker机器环境默认值

set DOCKER_HOST=tcp://192.168.99.100:2376
set DOCKER_MACHINE_NAME=default
set DOCKER_TLS_VERIFY=1
set DOCKER_TOOLBOX_INSTALL_PATH=C:\Program Files\Docker Toolbox
set DOCKER_CERT_PATH=C:\Users\panhl-a\.docker\machine\machines\default

很遗憾我不能给这个答案更多的投票。在找到此答案之前已配置端口转发,但仍在“服务器无法使用有效的HTTP响应”中挣扎。按照此答案中的建议复制证书后,一切都按预期开始工作。非常感谢!
set DOCKER_HOST=tcp://192.168.99.100:2376
set DOCKER_MACHINE_NAME=default
set DOCKER_TLS_VERIFY=1
set DOCKER_TOOLBOX_INSTALL_PATH=C:\Program Files\Docker Toolbox
set DOCKER_CERT_PATH=C:\Users\panhl-a\.docker\machine\machines\default