Docker maven插件ClientProtocolException(使用Docker Toolbox的Windows 10)

我正在尝试使用docker-maven-plugin(由spotify提供: https : //github.com/spotify/docker-maven-plugin )构build一个docker镜像,但事情并没有真正解决。 起初我得到这个例外:

org.apache.http.conn.HttpHostConnectException: Connect to localhost:2375 

我发现我必须创build一个env。 variables来解决这个问题( https://github.com/spotify/docker-maven-plugin/issues/135 ):

 set DOCKER_HOST=set DOCKER_HOST=tcp://192.168.99.100:2376 

docker_host

所以在设置env后。 variables我不断收到这个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 

我不知道如何解决这个问题,任何input将不胜感激。

您必须在2375端口上使用主机侦听来configuration虚拟机端口转发:

> VBoxManage modifyvm "default" --natpf1 "guestssh,tcp,,2375,,2376"

guestssh是端口转发的名称,可以select名称。

如果VBoxManage无法识别,可以用完整pathreplace它:

“pathVirtualBox \ VBoxManage.exe”

如果您遇到类似“服务器无法响应有效HTTP响应”的问题,请复制证书文件
“%USER%.docker \磨床\证书”

“%USER%.docker”
导致docker-maven-plugin在“%USER%.docker”中读取这些文件(不要复制目录证书,只是文件)。

我想我们可以重写maven属性来replace端口2375和证书path,但是我仍然没有find它。

解决这个:

  <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> 

重要的是这两个标签:

 <dockerHost>https://192.168.99.100:2376</dockerHost> <dockerCertPath>/Users/your_user/.docker/machine/machines/default</dockerCertPath> 

我正在使用dockerfile,你必须用这个标签来定义哪个path:

 <dockerDirectory>src/main/docker</dockerDirectory> 

现在,您可以通过以下方式构build您的jar并生成docker映像:

mvn包docker:build

docker-machine env默认

 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