运行Gradle启动一个docker容器,它将挂载当前目录并运行Gradle

我有我的Gradle构build本地运行在我的Windows机器和Ubuntu的Docker容器内。 它很好地工作。 然后,我尝试在Windows主机上创build一个新的Gradle目标,它将打包Docker容器,然后运行它。 运行时,它会挂载我当前的项目目录,然后执行testing。 那是当我碰到这个例外:

FAILURE: Build failed with an exception. * What went wrong: Could not create service of type FileCollectionSnapshotterRegistry using TaskExecutionServices.createFileCollectionSnapshotterRegistry(). > Could not create service of type CachingFileHasher using TaskExecutionServices.createFileSnapshotter(). * Try: Run with --info or --debug option to get more log output. * Exception is: org.gradle.internal.service.ServiceCreationException: Could not create service of type FileCollectionSnapshotterRegistry using TaskExecutionServices.createFileCollectionSnapshotterRegistry(). at org.gradle.internal.service.DefaultServiceRegistry$FactoryMethodService.invokeMethod(DefaultServiceRegistry.java:798) at org.gradle.internal.service.DefaultServiceRegistry$FactoryService.create(DefaultServiceRegistry.java:752) at org.gradle.internal.service.DefaultServiceRegistry$ManagedObjectProvider.getInstance(DefaultServiceRegistry.java:589) at org.gradle.internal.service.DefaultServiceRegistry$SingletonService.get(DefaultServiceRegistry.java:634) at org.gradle.internal.service.DefaultServiceRegistry$FactoryService.assembleParameters(DefaultServiceRegistry.java:762) at org.gradle.internal.service.DefaultServiceRegistry$FactoryService.create(DefaultServiceRegistry.java:751) at org.gradle.internal.service.DefaultServiceRegistry$ManagedObjectProvider.getInstance(DefaultServiceRegistry.java:589) at org.gradle.internal.service.DefaultServiceRegistry$SingletonService.get(DefaultServiceRegistry.java:634) at org.gradle.internal.service.DefaultServiceRegistry$FactoryService.assembleParameters(DefaultServiceRegistry.java:762) at org.gradle.internal.service.DefaultServiceRegistry$FactoryService.create(DefaultServiceRegistry.java:751) at org.gradle.internal.service.DefaultServiceRegistry$ManagedObjectProvider.getInstance(DefaultServiceRegistry.java:589) at org.gradle.internal.service.DefaultServiceRegistry$SingletonService.get(DefaultServiceRegistry.java:634) at org.gradle.internal.service.DefaultServiceRegistry.doGet(DefaultServiceRegistry.java:429) at org.gradle.internal.service.DefaultServiceRegistry.get(DefaultServiceRegistry.java:410) at org.gradle.internal.service.scopes.GradleScopeServices$3.create(GradleScopeServices.java:127) at org.gradle.internal.service.scopes.GradleScopeServices$3.create(GradleScopeServices.java:124) at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter.execute(DefaultTaskGraphExecuter.java:113) 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$3.execute(DefaultGradleLauncher.java:196) at org.gradle.initialization.DefaultGradleLauncher$3.execute(DefaultGradleLauncher.java:193) at org.gradle.internal.Transformers$4.transform(Transformers.java:169) at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:106) at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:56) at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:193) at org.gradle.initialization.DefaultGradleLauncher.doBuild(DefaultGradleLauncher.java:119) at org.gradle.initialization.DefaultGradleLauncher.run(DefaultGradleLauncher.java:102) at org.gradle.launcher.exec.GradleBuildController.run(GradleBuildController.java:71) 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:41) at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:26) at org.gradle.tooling.internal.provider.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:75) at org.gradle.tooling.internal.provider.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:49) at org.gradle.tooling.internal.provider.ServicesSetupBuildActionExecuter.execute(ServicesSetupBuildActionExecuter.java:44) at org.gradle.tooling.internal.provider.ServicesSetupBuildActionExecuter.execute(ServicesSetupBuildActionExecuter.java:29) at org.gradle.launcher.daemon.server.exec.ExecuteBuild.doBuild(ExecuteBuild.java:67) 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:47) 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.exec.LogAndCheckHealth.execute(LogAndCheckHealth.java:55) at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120) at org.gradle.launcher.daemon.server.exec.LogToClient.doBuild(LogToClient.java:60) 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:72) 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.StartBuildOrRespondWithBusy$1.run(StartBuildOrRespondWithBusy.java:50) at org.gradle.launcher.daemon.server.DaemonStateCoordinator$1.run(DaemonStateCoordinator.java:297) 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.internal.service.ServiceCreationException: Could not create service of type CachingFileHasher using TaskExecutionServices.createFileSnapshotter(). at org.gradle.internal.service.DefaultServiceRegistry$FactoryMethodService.invokeMethod(DefaultServiceRegistry.java:798) at org.gradle.internal.service.DefaultServiceRegistry$FactoryService.create(DefaultServiceRegistry.java:752) at org.gradle.internal.service.DefaultServiceRegistry$ManagedObjectProvider.getInstance(DefaultServiceRegistry.java:589) at org.gradle.internal.service.DefaultServiceRegistry$SingletonService.get(DefaultServiceRegistry.java:634) at org.gradle.internal.service.DefaultServiceRegistry$FactoryService.assembleParameters(DefaultServiceRegistry.java:762) at org.gradle.internal.service.DefaultServiceRegistry$FactoryService.create(DefaultServiceRegistry.java:751) at org.gradle.internal.service.DefaultServiceRegistry$ManagedObjectProvider.getInstance(DefaultServiceRegistry.java:589) at org.gradle.internal.service.DefaultServiceRegistry$SingletonService.get(DefaultServiceRegistry.java:634) at org.gradle.internal.service.DefaultServiceRegistry$SingletonService.getAll(DefaultServiceRegistry.java:657) at org.gradle.internal.service.DefaultServiceRegistry$OwnServices.getAll(DefaultServiceRegistry.java:560) at org.gradle.internal.service.DefaultServiceRegistry$CompositeProvider.getAll(DefaultServiceRegistry.java:1034) at org.gradle.internal.service.DefaultServiceRegistry$CachingProvider.getAll(DefaultServiceRegistry.java:990) at org.gradle.internal.service.DefaultServiceRegistry.getAll(DefaultServiceRegistry.java:404) at org.gradle.internal.service.scopes.TaskExecutionServices.createFileCollectionSnapshotterRegistry(TaskExecutionServices.java:172) at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:73) at org.gradle.internal.service.DefaultServiceRegistry.invoke(DefaultServiceRegistry.java:462) at org.gradle.internal.service.DefaultServiceRegistry.access$1200(DefaultServiceRegistry.java:84) at org.gradle.internal.service.DefaultServiceRegistry$FactoryMethodService.invokeMethod(DefaultServiceRegistry.java:796) ... 66 more Caused by: org.gradle.api.UncheckedIOException: java.io.IOException: Input/output error at org.gradle.internal.UncheckedException.throwAsUncheckedException(UncheckedException.java:43) at org.gradle.cache.internal.DefaultFileLockManager.lock(DefaultFileLockManager.java:89) at org.gradle.cache.internal.DefaultFileLockManager.lock(DefaultFileLockManager.java:73) at org.gradle.cache.internal.LockOnDemandCrossProcessCacheAccess.incrementLockCount(LockOnDemandCrossProcessCacheAccess.java:94) at org.gradle.cache.internal.LockOnDemandCrossProcessCacheAccess.acquireFileLock(LockOnDemandCrossProcessCacheAccess.java:136) at org.gradle.cache.internal.DefaultCacheAccess.onStartWork(DefaultCacheAccess.java:425) at org.gradle.cache.internal.DefaultCacheAccess.useCache(DefaultCacheAccess.java:182) at org.gradle.cache.internal.DefaultCacheAccess.useCache(DefaultCacheAccess.java:170) at org.gradle.cache.internal.DefaultCacheAccess.newCache(DefaultCacheAccess.java:339) at org.gradle.cache.internal.DefaultCacheAccess.newCache(DefaultCacheAccess.java:51) at org.gradle.cache.internal.DefaultPersistentDirectoryStore.createCache(DefaultPersistentDirectoryStore.java:110) at org.gradle.cache.internal.DefaultCacheFactory$ReferenceTrackingCache.createCache(DefaultCacheFactory.java:166) at org.gradle.api.internal.changedetection.state.DefaultTaskHistoryStore.createCache(DefaultTaskHistoryStore.java:50) at org.gradle.api.internal.changedetection.state.CachingFileHasher.<init>(CachingFileHasher.java:40) at org.gradle.internal.service.scopes.TaskExecutionServices.createFileSnapshotter(TaskExecutionServices.java:156) at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:73) at org.gradle.internal.service.DefaultServiceRegistry.invoke(DefaultServiceRegistry.java:462) at org.gradle.internal.service.DefaultServiceRegistry.access$1200(DefaultServiceRegistry.java:84) at org.gradle.internal.service.DefaultServiceRegistry$FactoryMethodService.invokeMethod(DefaultServiceRegistry.java:796) ... 83 more Caused by: java.io.IOException: Input/output error at org.gradle.cache.internal.filelock.LockStateAccess.readState(LockStateAccess.java:69) at org.gradle.cache.internal.filelock.LockStateAccess.ensureLockState(LockStateAccess.java:46) at org.gradle.cache.internal.filelock.LockFileAccess.ensureLockState(LockFileAccess.java:57) at org.gradle.cache.internal.DefaultFileLockManager$DefaultFileLock.lock(DefaultFileLockManager.java:278) at org.gradle.cache.internal.DefaultFileLockManager$DefaultFileLock.<init>(DefaultFileLockManager.java:138) at org.gradle.cache.internal.DefaultFileLockManager.lock(DefaultFileLockManager.java:86) ... 100 more BUILD FAILED Total time: 10.124 secs :testDocker FAILED 

不好了! 它看起来像我的project/.gradle/目录中的文件,我的主机已经locking,在我的docker容器上运行的gradle实例也想locking。 任何想法如何解决这个问题,而不是整个源代码树的副本? 我的源代码树包含一个巨大的node_modules目录,这个目录非常难以复制到临时的构build目录。 我希望能够同时在我的机器和Docker实例上运行Gradle。

我可以更改项目/ .gradle目录吗?