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
所以在设置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