2017-08-23 69 views
1

我开始使用com.spotify.docker-maven-plugin,但它的wiki上GitHub说要切换到com.spotify.dockerfile-maven-plugin。但是,在第一个插件中,我可以指定Docker主机,但我无法弄清楚如何使用后者。如何配置com.spotify.dockerfile-maven-plugin以在Docker Toolbox上运行?

我的机器使用Docker工具箱运行Windows 7,因此本地主机上没有Docker守护进程。

关于dockerfile-maven-plugin的文档似乎没有解释如何做到这一点。

  • 首先,maven输出表明它试图连接到localhost:2375。
  • 我已经更改了虚拟框中的端口转发,以便将docker计算机上的127.0.0.1:2375转发到2376。这似乎没有工作。
  • 我跟着these说明:

    set DOCKER_CERT_PATH=%USERPROFILE%\.docker\machine\machines\default 
    set DOCKER_HOST=tcp://192.168.99.100:2376 
    set DOCKER_MACHINE_NAME=default 
    set DOCKER_TLS_VERIFY=1 
    
  • 我设置DOCKER_HOST环境变量,并检查了我的泊坞窗机输出:

    $ docker-machine.exe ls 
    NAME  ACTIVE DRIVER  STATE  URL       SWARM DOCKER  ERRORS 
    default *  virtualbox Running tcp://192.168.99.100:2376   v17.06.1-ce 
    

    这导致试图连接maven的输出到码头机192.168.99.100:2376上,当机器不是运行时出现故障。 这导致不同的输出当机器实际运行(其由wget的确认,该文件是空的):

    Caused by: org.apache.http.ProtocolException: The server failed to respond with a valid HTTP response 
    

    更多输出:

    [INFO] --- dockerfile-maven-plugin:1.3.4:build (default) @ botlek-server --- 
    [INFO] Building Docker context D:\dev\projects\botleksensing\botleksensing\botlek-server 
    [INFO] 
    [INFO] Image will be built as prorail/botlek-server:latest 
    [INFO] 
    [WARNING] An attempt failed, will retry 1 more times 
    org.apache.maven.plugin.MojoExecutionException: Could not build image 
        at com.spotify.plugin.dockerfile.BuildMojo.buildImage(BuildMojo.java:184) 
        at com.spotify.plugin.dockerfile.BuildMojo.execute(BuildMojo.java:105) 
        at com.spotify.plugin.dockerfile.AbstractDockerMojo.tryExecute(AbstractDockerMojo.java:227) 
        at com.spotify.plugin.dockerfile.AbstractDockerMojo.execute(AbstractDockerMojo.java:216) 
        at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:134) 
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:207) 
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153) 
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145) 
        at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:116) 
        at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:80) 
        at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51) 
        at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128) 
        at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:307) 
        at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:193) 
        at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:106) 
        at org.apache.maven.cli.MavenCli.execute(MavenCli.java:863) 
        at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:288) 
        at org.apache.maven.cli.MavenCli.main(MavenCli.java:199) 
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
        at java.lang.reflect.Method.invoke(Method.java:483) 
        at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289) 
        at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229) 
        at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415) 
        at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356) 
        at org.codehaus.classworlds.Launcher.main(Launcher.java:47) 
    Caused by: com.spotify.docker.client.exceptions.DockerException: java.util.concurrent.ExecutionException: com.spotify.docker.client.shaded.javax.ws.rs.ProcessingException: org.apache.http.client.ClientProtocolException 
        at com.spotify.docker.client.DefaultDockerClient.propagate(DefaultDockerClient.java:2512) 
        at com.spotify.docker.client.DefaultDockerClient.request(DefaultDockerClient.java:2443) 
        at com.spotify.docker.client.DefaultDockerClient.version(DefaultDockerClient.java:501) 
        at com.spotify.docker.client.DefaultDockerClient.authRegistryHeader(DefaultDockerClient.java:2555) 
        at com.spotify.docker.client.DefaultDockerClient.build(DefaultDockerClient.java:1396) 
        at com.spotify.docker.client.DefaultDockerClient.build(DefaultDockerClient.java:1365) 
        at com.spotify.plugin.dockerfile.BuildMojo.buildImage(BuildMojo.java:177) 
        ... 26 more 
    Caused by: java.util.concurrent.ExecutionException: com.spotify.docker.client.shaded.javax.ws.rs.ProcessingException: org.apache.http.client.ClientProtocolException 
        at jersey.repackaged.com.google.common.util.concurrent.AbstractFuture$Sync.getValue(AbstractFuture.java:299) 
        at jersey.repackaged.com.google.common.util.concurrent.AbstractFuture$Sync.get(AbstractFuture.java:286) 
        at jersey.repackaged.com.google.common.util.concurrent.AbstractFuture.get(AbstractFuture.java:116) 
        at com.spotify.docker.client.DefaultDockerClient.request(DefaultDockerClient.java:2441) 
        ... 31 more 
    Caused by: com.spotify.docker.client.shaded.javax.ws.rs.ProcessingException: org.apache.http.client.ClientProtocolException 
        at org.glassfish.jersey.apache.connector.ApacheConnector.apply(ApacheConnector.java:481) 
        at org.glassfish.jersey.apache.connector.ApacheConnector$1.run(ApacheConnector.java:491) 
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) 
        at java.util.concurrent.FutureTask.run(FutureTask.java:266) 
        at jersey.repackaged.com.google.common.util.concurrent.MoreExecutors$DirectExecutorService.execute(MoreExecutors.java:299) 
        at java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:112) 
        at jersey.repackaged.com.google.common.util.concurrent.AbstractListeningExecutorService.submit(AbstractListeningExecutorService.java:50) 
        at jersey.repackaged.com.google.common.util.concurrent.AbstractListeningExecutorService.submit(AbstractListeningExecutorService.java:37) 
        at org.glassfish.jersey.apache.connector.ApacheConnector.apply(ApacheConnector.java:487) 
        at org.glassfish.jersey.client.ClientRuntime$2.run(ClientRuntime.java:178) 
        at org.glassfish.jersey.internal.Errors$1.call(Errors.java:271) 
        at org.glassfish.jersey.internal.Errors$1.call(Errors.java:267) 
        at org.glassfish.jersey.internal.Errors.process(Errors.java:315) 
        at org.glassfish.jersey.internal.Errors.process(Errors.java:297) 
        at org.glassfish.jersey.internal.Errors.process(Errors.java:267) 
        at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:340) 
        at org.glassfish.jersey.client.ClientRuntime$3.run(ClientRuntime.java:210) 
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) 
        at java.util.concurrent.FutureTask.run(FutureTask.java:266) 
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
        at java.lang.Thread.run(Thread.java:745) 
    Caused by: org.apache.http.client.ClientProtocolException 
        at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:186) 
        at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:71) 
        at org.glassfish.jersey.apache.connector.ApacheConnector.apply(ApacheConnector.java:435) 
        ... 21 more 
    Caused by: org.apache.http.ProtocolException: The server failed to respond with a valid HTTP response 
        at   org.apache.http.impl.conn.DefaultHttpResponseParser.parseHead(DefaultHttpResponseParser.java:151) 
        at org.apache.http.impl.conn.DefaultHttpResponseParser.parseHead(DefaultHttpResponseParser.java:57) 
        at org.apache.http.impl.io.AbstractMessageParser.parse(AbstractMessageParser.java:259) 
        at org.apache.http.impl.DefaultBHttpClientConnection.receiveResponseHeader(DefaultBHttpClientConnection.java:163) 
        at org.apache.http.impl.conn.CPoolProxy.receiveResponseHeader(CPoolProxy.java:167) 
        at org.apache.http.protocol.HttpRequestExecutor.doReceiveResponse(HttpRequestExecutor.java:273) 
        at org.apache.http.protocol.HttpRequestExecutor.execute(HttpRequestExecutor.java:125) 
        at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:271) 
        at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:184) 
        at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:88) 
        at org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:110) 
        at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:184) 
        ... 23 more 
    [INFO] Building Docker context D:\dev\projects\botleksensing\botleksensing\botlek-server 
    [INFO] 
    [INFO] Image will be built as prorail/botlek-server:latest 
    [INFO] 
    [INFO] -----------------------------------------------------------------  ------- 
    [INFO] BUILD FAILURE 
    [INFO] ------------------------------------------------------------------------ 
    [INFO] Total time: 5.087 s 
    [INFO] Finished at: 2017-10-19T14:29:03+02:00 
    [INFO] Final Memory: 41M/602M 
    [INFO] ------------------------------------------------------------------------ 
    [ERROR] Failed to execute goal com.spotify:dockerfile-maven-plugin:1.3.4:build (default) on project botlek-server: Could not build image: 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 -> [Help 1] 
    [ERROR] 
    

回答

0

予固定的问题通过完全删除工具箱并安装最新版本(我现在在v17.07.0-ce上,我相信我之前是v17.05.0-ce)。

我还保留了问题中描述的环境变量(例如DOCKER_HOST = 192.168.99.100:2376)。

注意自从Docker Toolbox安装删除已注册为安装源的virtualbox.msi后,我遇到了virtualbox的一些问题。要解决此问题,我下载了安装程序(here),并使用the following command上的变体来提取msi。

VirtualBox-4.0.4-70112-Win.exe -extract -path c:\temp 

我不得不把.msi文件重命名为virtualbox.msi,然后我可以删除旧版本。

相关问题