gradle-docker icon indicating copy to clipboard operation
gradle-docker copied to clipboard

Running on Windows

Open whgibbo opened this issue 10 years ago • 10 comments

Hi, Firstly I new to using docker and have recently installed docker machine and have docker running.

I've taken a sample gradle project from https://spring.io/guides/gs/spring-boot-docker/ and I'm trying to get it to work on windows.

So I tried using the dockerBinary, but that didn't seem to work. So thought that I would try the following

useApi true hostUrl 'http://192.168.99.100:2376' apiUsername 'user' apiPassword 'password'

But when I build I get the following:

:buildDocker FAILED FAILURE: Build failed with an exception.

  • What went wrong: Execution failed for task ':buildDocker'. java.io.IOException: Stream Closed
  • Try: Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. BUILD FAILED

So tried it with a stack trace and got the following:

  • Exception is: org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':buildDocker'. at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:69) at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:46) at org.gradle.api.internal.tasks.execution.PostExecutionAnalysisTaskExecuter.execute(PostExecutionAnalysisTaskExecuter.java:35) at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:64) at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:58) at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:52) at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:52) at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:53) at org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:43) at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:203) at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:185) at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.processTask(AbstractTaskPlanExecutor.java:62) at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.run(AbstractTaskPlanExecutor.java:50) at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor.process(DefaultTaskPlanExecutor.java:25) at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter.execute(DefaultTaskGraphExecuter.java:110) at org.gradle.execution.SelectedTaskExecutionAction.execute(SelectedTaskExecutionAction.java:37) at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:37) at org.gradle.execution.DefaultBuildExecuter.access$000(DefaultBuildExecuter.java:23) at org.gradle.execution.DefaultBuildExecuter$1.proceed(DefaultBuildExecuter.java:43) at org.gradle.execution.DryRunBuildExecutionAction.execute(DryRunBuildExecutionAction.java:32) at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:37) at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:30) at org.gradle.initialization.DefaultGradleLauncher$4.run(DefaultGradleLauncher.java:158) at org.gradle.internal.Factories$1.create(Factories.java:22) at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:90) at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:52) at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:155) at org.gradle.initialization.DefaultGradleLauncher.access$200(DefaultGradleLauncher.java:36) at org.gradle.initialization.DefaultGradleLauncher$1.create(DefaultGradleLauncher.java:103) at org.gradle.initialization.DefaultGradleLauncher$1.create(DefaultGradleLauncher.java:97) at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:90) at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:62) at org.gradle.initialization.DefaultGradleLauncher.doBuild(DefaultGradleLauncher.java:97) at org.gradle.initialization.DefaultGradleLauncher.run(DefaultGradleLauncher.java:86) at org.gradle.launcher.exec.InProcessBuildActionExecuter$DefaultBuildController.run(InProcessBuildActionExecuter.java:102) at org.gradle.tooling.internal.provider.ExecuteBuildActionRunner.run(ExecuteBuildActionRunner.java:28) at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35) at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:47) at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:32) at org.gradle.launcher.exec.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:77) at org.gradle.launcher.exec.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:47) at org.gradle.launcher.exec.DaemonUsageSuggestingBuildActionExecuter.execute(DaemonUsageSuggestingBuildActionExecuter.java:51) at org.gradle.launcher.exec.DaemonUsageSuggestingBuildActionExecuter.execute(DaemonUsageSuggestingBuildActionExecuter.java:28) at org.gradle.launcher.cli.RunBuildAction.run(RunBuildAction.java:43) at org.gradle.internal.Actions$RunnableActionAdapter.execute(Actions.java:170) at org.gradle.launcher.cli.CommandLineActionFactory$ParseAndBuildAction.execute(CommandLineActionFactory.java:237) at org.gradle.launcher.cli.CommandLineActionFactory$ParseAndBuildAction.execute(CommandLineActionFactory.java:210) at org.gradle.launcher.cli.JavaRuntimeValidationAction.execute(JavaRuntimeValidationAction.java:35) at org.gradle.launcher.cli.JavaRuntimeValidationAction.execute(JavaRuntimeValidationAction.java:24) at org.gradle.launcher.cli.CommandLineActionFactory$WithLogging.execute(CommandLineActionFactory.java:206) at org.gradle.launcher.cli.CommandLineActionFactory$WithLogging.execute(CommandLineActionFactory.java:169) at org.gradle.launcher.cli.ExceptionReportingAction.execute(ExceptionReportingAction.java:33) at org.gradle.launcher.cli.ExceptionReportingAction.execute(ExceptionReportingAction.java:22) at org.gradle.launcher.Main.doAction(Main.java:33) at org.gradle.launcher.bootstrap.EntryPoint.run(EntryPoint.java:45) at org.gradle.launcher.bootstrap.ProcessBootstrap.runNoExit(ProcessBootstrap.java:54) at org.gradle.launcher.bootstrap.ProcessBootstrap.run(ProcessBootstrap.java:35) at org.gradle.launcher.GradleMain.main(GradleMain.java:23) Caused by: com.sun.jersey.api.client.ClientHandlerException: java.io.IOException: Stream Closed at com.sun.jersey.client.apache4.ApacheHttpClient4Handler.handle(ApacheHttpClient4Handler.java:184) at com.github.dockerjava.client.utils.JsonClientFilter.handle(JsonClientFilter.java:17) at com.sun.jersey.api.client.filter.LoggingFilter.handle(LoggingFilter.java:217) at com.sun.jersey.api.client.Client.handle(Client.java:652) at com.sun.jersey.api.client.WebResource.handle(WebResource.java:682) at com.sun.jersey.api.client.WebResource.access$200(WebResource.java:74) at com.sun.jersey.api.client.WebResource$Builder.post(WebResource.java:570) at com.github.dockerjava.client.command.BuildImgCmd.callDocker(BuildImgCmd.java:94) at com.github.dockerjava.client.command.BuildImgCmd.impl(BuildImgCmd.java:72) at com.github.dockerjava.client.command.BuildImgCmd.impl(BuildImgCmd.java:35) at com.github.dockerjava.client.command.AbstrDockerCmd.exec(AbstrDockerCmd.java:21) at se.transmode.gradle.plugins.docker.client.JavaDockerClient.buildImage(JavaDockerClient.java:43) at se.transmode.gradle.plugins.docker.client.DockerClient$buildImage.call(Unknown Source) at se.transmode.gradle.plugins.docker.DockerTask.build(DockerTask.groovy:244) at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:75) at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$StandardTaskAction.doExecute(AnnotationProcessingTaskFactory.java:226) at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$StandardTaskAction.execute(AnnotationProcessingTaskFactory.java:219) at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$StandardTaskAction.execute(AnnotationProcessingTaskFactory.java:208) at org.gradle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.java:585) at org.gradle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.java:568) at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:80) at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:61) ... 57 more Caused by: java.io.IOException: Stream Closed at com.sun.jersey.core.util.ReaderWriter.writeTo(ReaderWriter.java:114) at com.sun.jersey.core.provider.AbstractMessageReaderWriterProvider.writeTo(AbstractMessageReaderWriterProvider.java:76) at com.sun.jersey.core.impl.provider.entity.InputStreamProvider.writeTo(InputStreamProvider.java:98) at com.sun.jersey.core.impl.provider.entity.InputStreamProvider.writeTo(InputStreamProvider.java:59) at com.sun.jersey.api.client.RequestWriter$RequestEntityWriterImpl.writeRequestEntity(RequestWriter.java:231) at com.sun.jersey.client.apache4.ApacheHttpClient4Handler$2.writeTo(ApacheHttpClient4Handler.java:262) at org.apache.http.entity.BufferedHttpEntity.writeTo(BufferedHttpEntity.java:115) at org.apache.http.entity.HttpEntityWrapper.writeTo(HttpEntityWrapper.java:98) at org.apache.http.impl.client.EntityEnclosingRequestWrapper$EntityWrapper.writeTo(EntityEnclosingRequestWrapper.java:108) at org.apache.http.impl.entity.EntitySerializer.serialize(EntitySerializer.java:122) at org.apache.http.impl.AbstractHttpClientConnection.sendRequestEntity(AbstractHttpClientConnection.java:271) at org.apache.http.impl.conn.ManagedClientConnectionImpl.sendRequestEntity(ManagedClientConnectionImpl.java:197) at org.apache.http.protocol.HttpRequestExecutor.doSendRequest(HttpRequestExecutor.java:257) at org.apache.http.protocol.HttpRequestExecutor.execute(HttpRequestExecutor.java:125) at org.apache.http.impl.client.DefaultRequestDirector.tryExecute(DefaultRequestDirector.java:715) at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:520) at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:906) at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:827) at com.sun.jersey.client.apache4.ApacheHttpClient4Handler.handle(ApacheHttpClient4Handler.java:170) ... 78 more

Any thoughts or suggestions ?

whgibbo avatar Sep 11 '15 14:09 whgibbo

Same over here with Docker daemon 1.8:

docker --version Docker version 1.8.0, build 0d03096

fwaibel avatar Sep 11 '15 14:09 fwaibel

Hi, Managed to get it sort of working using

docker { dockerBinary = "c:\Program Files\Docker Toolbox\docker.exe" useApi false }

This now builds the image :) But is failing to push the image, which is ok for the time being as I don't really want to push it..

But any thoughts ?

Thanks

whgibbo avatar Sep 14 '15 14:09 whgibbo

Hi, I tried the same thing on Windows and it is still not able to build a docker image. Plugin tries to post to tcp 127.0.0.1:2375 using docker remote api, even though I specified useApi false.

My docker config in build.gradle:

docker {
    dockerBinary = 'c:/Program Files/Docker Toolbox/docker.exe'
    useApi false
}

Any suggestions?

pmihalcin avatar Nov 08 '15 16:11 pmihalcin

Try running the command docker-machine env <Your Docker machine Name> before running gradle

yugesha avatar Feb 05 '16 10:02 yugesha

Same here too i tried with and without useapi. Its not working

If i using useapi as true. I am getting

:buildDocker FAILED FAILURE: Build failed with an exception.

What went wrong: Execution failed for task ':buildDocker'. java.io.IOException: Stream Closed

If i use api false

It tries to connect 127.0.0.1:2375 and failing

C: docker.exe --version Docker version 1.10.2, build c3959b1 C:docker-machine.exe --version docker-machine.exe version 0.6.0, build e27fb87 PS C: docker-machine.exe env vino $Env:DOCKER_TLS_VERIFY = "1" $Env:DOCKER_HOST = "tcp://192.168.99.101:2376" $Env:DOCKER_CERT_PATH = "C:\Users\VNARASIMHAN.docker\machine\machines\vino" $Env:DOCKER_MACHINE_NAME = "vino"

talk2vino avatar Feb 25 '16 08:02 talk2vino

Try doing this, export DOCKER_HOST="tcp://xxxx:2376"

Where xxxx is the IPaddress of the docker vm.

and then do

./gradlew build buildDocker

skarthiksankaran avatar Feb 26 '16 06:02 skarthiksankaran

Try using docker-machine.exe env vino | Invoke-Expression (powershell), before building with gradle. This set all the necessary env variables in your PS shell. Before running gradle task you should be able to run "docker ps" and see all containers running in your docker host

bjornmagnusson avatar Feb 26 '16 08:02 bjornmagnusson

Hi,

When I executed "gradle distDocker",I got below error

Execution failed for task ':distDocker'.

org.apache.http.conn.HttpHostConnectException: Connection to http://xxx:2375 refused

I have added below line in my build.gradle:

distDocker { exposePort 8080 setEnvironment 'JAVA_OPTS', '-Dspring.profiles.active=docker' }

docker { useApi true hostUrl 'http://xxx:2375' baseImage = 'java:7' } I have Docker toolbox installed for windows

Please provide suggestion to solve this error.

ruchikagarg23 avatar Jul 11 '17 11:07 ruchikagarg23

Same problem here, using curl I get this:

$ curl http://10.0.0.61:4243/version
{"Version":"17.09.0-ce","ApiVersion":"1.32","MinAPIVersion":"1.12","GitCommit":"afdb6d4","GoVersion":"go1.8.3","Os":"linux","Arch":"amd64","KernelVersion":"3.10.0-514.el7.x86_64","BuildTime":"2017-09-26T22:42:49.000000000+00:00"}

from gradle buildDocker:

Caused by: com.sun.jersey.api.client.ClientHandlerException: java.io.IOException: Stream Closed at com.sun.jersey.client.apache4.ApacheHttpClient4Handler.handle(ApacheHttpClient4Handler.java:184) at com.github.dockerjava.client.utils.JsonClientFilter.handle(JsonClientFilter.java:17) at com.sun.jersey.api.client.filter.LoggingFilter.handle(LoggingFilter.java:217) at com.sun.jersey.api.client.Client.handle(Client.java:652) at com.sun.jersey.api.client.WebResource.handle(WebResource.java:682) at com.sun.jersey.api.client.WebResource.access$200(WebResource.java:74) at com.sun.jersey.api.client.WebResource$Builder.post(WebResource.java:570) at com.github.dockerjava.client.command.BuildImgCmd.callDocker(BuildImgCmd.java:94)

My build conifg:

docker {
	useApi true
	hostUrl 'http://10.0.0.61:4243/'
}

dmonti avatar Oct 26 '17 12:10 dmonti

I got the same problem. Plugin config:

docker {
    useApi true
    hostUrl 'http://x.x.x.x:2376'
}

Remote host:

$ curl http://x.x.x.x:2376/version
{"Platform":{"Name":""},"Components":[{"Name":"Engine","Version":"17.12.1-ce","Details":{"ApiVersion":"1.35","Arch":"amd64","BuildTime":"2018-02-27T22:16:13.000000000+00:00","Experimental":"false","GitCommit":"7390fc6","GoVersion":"go1.9.4","KernelVersion":"4.4.0-116-generic","MinAPIVersion":"1.12","Os":"linux"}}],"Version":"17.12.1-ce","ApiVersion":"1.35","MinAPIVersion":"1.12","GitCommit":"7390fc6","GoVersion":"go1.9.4","Os":"linux","Arch":"amd64","KernelVersion":"4.4.0-116-generic","BuildTime":"2018-02-27T22:16:13.000000000+00:00"}

Edit: Having taken a closer look at the stacktrace, I think that the problem might be with with the docker-java dependency. The plugin uses version 2.2.0, which is over 2 years old now, whereas the current version is 3.0.14. I guess there's no easy fix for this for now.

SpaceBison avatar Mar 20 '18 13:03 SpaceBison