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

Cannot run program "docker": error=2, No such file or directory

Open victoy opened this issue 8 years ago • 19 comments

I got this error. How to fix this issue?

  • Try: Run with --info or --debug option to get more log output.
  • Exception is: org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':SourceInventory:distDocker'. 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:155) 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:152) at org.gradle.initialization.DefaultGradleLauncher.access$200(DefaultGradleLauncher.java:33) at org.gradle.initialization.DefaultGradleLauncher$1.create(DefaultGradleLauncher.java:100) at org.gradle.initialization.DefaultGradleLauncher$1.create(DefaultGradleLauncher.java:94) 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:94) at org.gradle.initialization.DefaultGradleLauncher.run(DefaultGradleLauncher.java:83) at org.gradle.launcher.exec.InProcessBuildActionExecuter$DefaultBuildController.run(InProcessBuildActionExecuter.java:94) at org.gradle.tooling.internal.provider.runner.BuildModelActionRunner.run(BuildModelActionRunner.java:46) at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35) at org.gradle.tooling.internal.provider.runner.SubscribableBuildActionRunner.run(SubscribableBuildActionRunner.java:58) at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35) at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:43) at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:28) at org.gradle.launcher.exec.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:77) at org.gradle.launcher.exec.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:47) at org.gradle.launcher.daemon.server.exec.ExecuteBuild.doBuild(ExecuteBuild.java:52) at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36) at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120) at org.gradle.launcher.daemon.server.exec.WatchForDisconnection.execute(WatchForDisconnection.java:37) at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120) at org.gradle.launcher.daemon.server.exec.ResetDeprecationLogger.execute(ResetDeprecationLogger.java:26) at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120) at org.gradle.launcher.daemon.server.exec.RequestStopIfSingleUsedDaemon.execute(RequestStopIfSingleUsedDaemon.java:34) at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120) at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.call(ForwardClientInput.java:74) at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.call(ForwardClientInput.java:72) at org.gradle.util.Swapper.swap(Swapper.java:38) at org.gradle.launcher.daemon.server.exec.ForwardClientInput.execute(ForwardClientInput.java:72) at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120) at org.gradle.launcher.daemon.server.health.DaemonHealthTracker.execute(DaemonHealthTracker.java:47) at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120) at org.gradle.launcher.daemon.server.exec.LogToClient.doBuild(LogToClient.java:66) at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36) at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120) at org.gradle.launcher.daemon.server.exec.EstablishBuildEnvironment.doBuild(EstablishBuildEnvironment.java:71) at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36) at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120) at org.gradle.launcher.daemon.server.health.HintGCAfterBuild.execute(HintGCAfterBuild.java:41) at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120) at org.gradle.launcher.daemon.server.exec.StartBuildOrRespondWithBusy$1.run(StartBuildOrRespondWithBusy.java:50) at org.gradle.launcher.daemon.server.DaemonStateCoordinator$1.run(DaemonStateCoordinator.java:246) at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:54) at org.gradle.internal.concurrent.StoppableExecutorImpl$1.run(StoppableExecutorImpl.java:40) Caused by: org.gradle.api.UncheckedIOException: java.io.IOException: Cannot run program "docker": error=2, No such file or directory at org.gradle.internal.UncheckedException.throwAsUncheckedException(UncheckedException.java:43) at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:78) 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) ... 70 more Caused by: java.io.IOException: Cannot run program "docker": error=2, No such file or directory at se.transmode.gradle.plugins.docker.client.NativeDockerClient.executeAndWait(NativeDockerClient.groovy:45) at se.transmode.gradle.plugins.docker.client.NativeDockerClient.buildImage(NativeDockerClient.groovy:34) 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) ... 77 more Caused by: java.io.IOException: error=2, No such file or directory ... 82 more

victoy avatar Nov 20 '15 02:11 victoy

As "Caused by: java.io.IOException: Cannot run program "docker": error=2, No such file or directory", mention you are trying to execute local docker but it cannot be find.

Are you sure you have docker engine installed locally?

bjornmagnusson avatar Nov 20 '15 07:11 bjornmagnusson

Do we have any updates on this problem? I am also facing this issue.

HardikMDesai avatar Apr 07 '16 09:04 HardikMDesai

In order to help you further we need more information regarding your environment and what your are building dockerfile / build.gradle.

bjornmagnusson avatar Apr 07 '16 09:04 bjornmagnusson

Sure, here is my build.gradle:

buildscript { ext { springBootVersion = '1.3.3.RELEASE' } repositories { mavenCentral() } dependencies { classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}") classpath('se.transmode.gradle:gradle-docker:1.2') } }

apply plugin: 'java' apply plugin: 'eclipse' apply plugin: 'spring-boot' apply plugin: 'docker'

jar { baseName = 'MicroServiceStarter' version = '0.0.1-SNAPSHOT' }

sourceCompatibility = 1.8 targetCompatibility = 1.8

repositories { mavenCentral() }

dependencies { compile('org.springframework.boot:spring-boot-starter-web') compile('org.slf4j:slf4j-api:1.7.14') compile('org.postgresql:postgresql') testCompile('org.springframework.boot:spring-boot-starter-test') testCompile('junit:junit:4.12') }

task buildDocker(type: Docker, dependsOn: build) { push = false applicationName = jar.baseName dockerfile = file('src/main/docker/Dockerfile') doFirst { copy { from jar into stageDir } } }

task wrapper(type: Wrapper) { gradleVersion = '2.12' }

and here is my Dockerfile:

FROM frolvlad/alpine-oraclejdk8:slim VOLUME /tmp ADD MicroServiceStarter-0.0.1-SNAPSHOT.jar app.jar RUN sh -c 'touch /app.jar' ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

HardikMDesai avatar Apr 07 '16 09:04 HardikMDesai

Hi, i was having the same issue.

Turns out, it was because i was running this inside intellij. If you run your gradle build from the same terminal you have Docker open, it solved the issue. I think it's down to environment vars, but I'm rather new to this so not sure.

Hopefully that helps!!

Hazz223 avatar Apr 14 '16 10:04 Hazz223

Thanks @Hazz223. Yes, that is most likely the issue. The terminal that are running the gradle task must be able to run traditional docker commands when not using the api

bjornmagnusson avatar Apr 14 '16 11:04 bjornmagnusson

You're right @Hazz223 .. I was facing this issue when I was trying to run gradle from within my Eclipse. From the command line, I installed the wrapper using gradle wrapper command. Thereafter, when I run the ./gradlew buildDocker command, it works fine. Thanks!

HardikMDesai avatar Apr 14 '16 19:04 HardikMDesai

Same problem after installing docker for mac beta. It works fine in terminal, but not from Idea. Native mac docker doesn't use ENVs, but it works fine in any open terminals. It would be nice if somebody find to fix it for Eclipse/Idea without wrappers or other extra steps

apolischuk avatar Jun 05 '16 17:06 apolischuk

Looks like the same issue as #83. I'm running into the same problems with Docker for Mac 1.12.3-beta30.1. Same as @HardikDesaiBCG and @apolischuk it works fine from the terminal.

catkins avatar Nov 26 '16 13:11 catkins

I opened from macOS terminal like this. open -a "IntelliJ IDEA" &

Then you get all the path variables in Intellij. My build worked fine then.

You will then have to open intellij this way every time. Perhaps there's a way to get a shortcut in the dock to run this command, but I've not done that research yet

Check here for more info http://depressiverobot.com/2016/02/05/intellij-path.html

mattbroekhuis avatar Dec 15 '16 16:12 mattbroekhuis

Just encountered the same issue using:

IntelliJ IDEA 2016.3.3. Docker for Mac Version 1.13.0 (15072) Gradle 3.1

Frustratingly intermittent in my case; worked fine, saved state in version control, came back and hit build and failed with the same error=2 message. Confirmed no files changed in the project, so IntelliJ seems to be able to use the path variables sometimes, not others. As others have said, all works fine from CLI.

@mattbroekhuis' workaround seems to be working for me so far.

noln avatar Jan 25 '17 21:01 noln

The same for the IntelliJ IDEA 2017.1

solomkinmv avatar Mar 25 '17 11:03 solomkinmv

I had this exact problem with IntelliJ IDEA 2017.2.2 on the Mac. It ended up being a Gradle Daemon that had been running before I started Docker. I killed the Gradle Daemon, then restarted IntelliJ. It worked fine after that.

Update: after some restart it broke again. I closed IntelliJ, killed the Daemon and started IntelliJ; no joy. Starting with open -a "IntelliJ IDEA" & worked though. Thanks @mattbroekhuis for that tip.

alan-givati avatar Aug 29 '17 10:08 alan-givati

I faced the same problem for mac machine but for a different plugin.

While running sbt from within IntellijIDEA it gave the same error as mentioned in the issue but running it from the terminal worked fine.

It turns out that intellijIDEA uses different PATH than that is SET in environment variable.

For more details refer the blog fix PATH environment variable for IntelliJ IDEA on Mac OS X

As a solution I created a shell script

#!/usr/bin/env bash open -a "IntelliJ IDEA"

and made it execute at login refer this answer to launch an executable at login

skvithalani avatar Nov 12 '17 05:11 skvithalani

For what it's worth, I ran into this and fixed it by upgrading Gradle for my IntelliJ project.

I had two IntelliJ projects, one I had generated recently, and another that had existed since last year. I tried adding this plugin and creating an IntelliJ gradle run/debug configuration to invoke buildDocker.

For the new project, it always worked. For the old project, it never did. In both cases, gradlew always worked from the shell.

The new project was on gradle 3.5-rc-2. the old project was on 2.1

I upgraded the old project to 3.4 and it still didn't work. Then I upgraded it to 3.5-rc-2 and it started working.

tunesmith avatar Nov 16 '17 01:11 tunesmith

@mattbroekhuis That link you shared redirects me to Github, and yields nothing whatsoever.

missingfaktor avatar Aug 16 '19 09:08 missingfaktor

Excuse me, I have the same issue on Windows 10 with VirtualBox minikube driver. I launch a command from my cmd shell on windows but get the samme error, you can find more details and configurations here: https://stackoverflow.com/questions/69070895/error-deploying-quarkus-rest-app-from-my-windows-machine-to-my-minikube-virtual. I also update to last mvn version (3.8.2) but the problem still remain..What's the problem? I have Run it inIntellij also...

You can response where you want.. Thanks very much

Roberto

robyp1 avatar Sep 10 '21 12:09 robyp1

All the alleged solutions are for fixing IntelliJ environment variables. How will this help when you push the build to a CI/CD pipeline not in your environment? I am seeing this problem in local as well as CodeBuild.

schowdiah avatar Oct 05 '21 15:10 schowdiah

I'm facing the same problem in intellij idea with ubuntu in 2022, I dont know how to fix it

opticSquid avatar Sep 17 '22 20:09 opticSquid