2017-03-18 51 views
0

我是新来泊坞窗和我使用gradle-docker-plugin有来自gradle这个脚本建筑形象的问题:不能在Windows的gradle通过建立泊坞窗图像10

task dockerBuildImage(type: DockerBuildImage, dependsOn: [dockerCreateDockerfile, assemble]) { 
    tag = "my_tag_here" 
    dockerFile = dockerCreateDockerfile.destFile 
    inputDir = dockerCreateDockerfile.destFile.parentFile 
} 

而且比我得到这样的堆栈跟踪:

Building image using context 'D:\Learning\1\myproject\webapp\build'. 
Using Dockerfile 'D:\Learning\1\myproject\webapp\build\Dockerfile' 
Using tag 'localhost:5000/test/myproject-webapp:1.0.0-20170318135307' for image. 
Operating System not officially supported by junixsocket: Windows 10 
java.lang.UnsatisfiedLinkError: Could not find library in classpath, tried: [libjunixsocket-windows10-1.8-amd64.so, libjunixsocket-windows10-1.5-amd64.so] 
     at org.newsclub.net.unix.NativeUnixSocket.load(NativeUnixSocket.java:81) 
     at org.newsclub.net.unix.NativeUnixSocket.<clinit>(NativeUnixSocket.java:112) 
     at org.newsclub.net.unix.AFUNIXSocket.<init>(AFUNIXSocket.java:36) 
     at org.newsclub.net.unix.AFUNIXSocket.newInstance(AFUNIXSocket.java:50) 
     at com.github.dockerjava.jaxrs.ApacheUnixSocket.<init>(ApacheUnixSocket.java:51) 
     at com.github.dockerjava.jaxrs.UnixConnectionSocketFactory.createSocket(UnixConnectionSocketFactory.java:66) 
     at org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:118) 
     at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.connect(PoolingHttpClientConnectionManager.java:353) 
     at org.apache.http.impl.execchain.MainClientExec.establishRoute(MainClientExec.java:380) 
     at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:236) 
     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) 
     at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:71) 
     at org.glassfish.jersey.apache.connector.ApacheConnector.apply(ApacheConnector.java:435) 
     at org.glassfish.jersey.client.ClientRuntime.invoke(ClientRuntime.java:252) 
     at org.glassfish.jersey.client.JerseyInvocation$2.call(JerseyInvocation.java:701) 
     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:228) 
     at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:444) 
     at org.glassfish.jersey.client.JerseyInvocation.invoke(JerseyInvocation.java:697) 
     at org.glassfish.jersey.client.JerseyInvocation$Builder.method(JerseyInvocation.java:448) 
     at org.glassfish.jersey.client.JerseyInvocation$Builder.post(JerseyInvocation.java:349) 
     at com.github.dockerjava.jaxrs.async.POSTCallbackNotifier.response(POSTCallbackNotifier.java:29) 
     at com.github.dockerjava.jaxrs.async.AbstractCallbackNotifier.call(AbstractCallbackNotifier.java:50) 
     at com.github.dockerjava.jaxrs.async.AbstractCallbackNotifier.call(AbstractCallbackNotifier.java:24) 
     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) 
[dockerjava-jaxrs-async-0] ERROR com.github.dockerjava.core.async.ResultCallbackTemplate - Error during callback 
java.lang.NoClassDefFoundError: Could not initialize class org.newsclub.net.unix.NativeUnixSocket 
     at org.newsclub.net.unix.AFUNIXSocketImpl.connect(AFUNIXSocketImpl.java:134) 
     at org.newsclub.net.unix.AFUNIXSocket.connect(AFUNIXSocket.java:97) 
     at com.github.dockerjava.jaxrs.ApacheUnixSocket.connect(ApacheUnixSocket.java:62) 
     at com.github.dockerjava.jaxrs.UnixConnectionSocketFactory.connectSocket(UnixConnectionSocketFactory.java:74) 
     at org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:134) 
     at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.connect(PoolingHttpClientConnectionManager.java:353) 
     at org.apache.http.impl.execchain.MainClientExec.establishRoute(MainClientExec.java:380) 
     at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:236) 
     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) 
     at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:71) 
     at org.glassfish.jersey.apache.connector.ApacheConnector.apply(ApacheConnector.java:435) 
     at org.glassfish.jersey.client.ClientRuntime.invoke(ClientRuntime.java:252) 
     at org.glassfish.jersey.client.JerseyInvocation$2.call(JerseyInvocation.java:701) 
     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:228) 
     at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:444) 
     at org.glassfish.jersey.client.JerseyInvocation.invoke(JerseyInvocation.java:697) 
     at org.glassfish.jersey.client.JerseyInvocation$Builder.method(JerseyInvocation.java:448) 
     at org.glassfish.jersey.client.JerseyInvocation$Builder.post(JerseyInvocation.java:349) 
     at com.github.dockerjava.jaxrs.async.POSTCallbackNotifier.response(POSTCallbackNotifier.java:29) 
     at com.github.dockerjava.jaxrs.async.AbstractCallbackNotifier.call(AbstractCallbackNotifier.java:50) 
     at com.github.dockerjava.jaxrs.async.AbstractCallbackNotifier.call(AbstractCallbackNotifier.java:24) 
     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) 
:webapp:dockerBuildImage FAILED 

如果我直接运行“docker build”命令 - 一切工作正常。 有人能指点我什么是错的。有任何想法吗。

回答

4

该插件不支持Windows。它假定你正在Linux系统上运行,因为这就是Docker Engine需要的。 Docker for Windows使用Hyper-V虚拟化(以前它依赖于VirtualBox)。

你需要在Linux系统上运行这个Gradle插件。这可能是Windows机器上的虚拟机。我宁愿跳过适用于Windows的Docker;相反,我使用合适的Linux guest虚拟机运行VirtualBox,然后按照该guest虚拟机中的Docker Engine安装说明进行操作。然后,在该客户的docker旁边,您可以安装gradle以及您需要的任何其他开发工具。