8

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

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

我发现我必须创建一个环境。变量来解决这个问题(https://github.com/spotify/docker-maven-plugin/issues/135):

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

docker_host

所以在设置了那个环境之后。变量我不断收到这个 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

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

4

3 回答 3

5

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

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

guestsh 是端口转发的名称,可以选择名称。

如果VBoxManage无法识别,您可以将其替换为完整路径:

“pathVirtualBox\VBoxManage.exe”

之后,如果您遇到“服务器无法以有效的 HTTP 响应响应”之类的问题,请将证书文件从
“%USER%.docker\machines\certs” 复制

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

我认为我们可以覆盖 maven 属性来替换端口 2375 和证书路径,但我仍然找不到它。

于 2016-07-15T14:24:21.027 回答
3

通过以下方式解决此问题:

        <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,您必须使用此标签定义哪个路径:

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

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

mvn 包 docker:build

于 2017-01-12T19:23:57.173 回答
0

docker-machine 环境默认

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
于 2017-07-05T05:59:16.533 回答