docker-java: DockerBuildImage fails with Docker 17.05
Version 17.05.0-ce-rc1-mac8 (16582) Channel: edge 73d01bb48e
Fails with NPE (see below) although docker build itself succeeded:
Step 12/12 : CMD bundle exec rake db:migrate && bundle exec rails s
---> Using cache
---> b7c2febdf592
Successfully built b7c2febdf592
Successfully tagged app:b2279a4
As I understand the reason is that last line in the build output is now not “Successfully built”, but “Successfully tagged”.
Stacktrace:
Caused by: com.github.dockerjava.api.exception.DockerClientException: Could not build image: null
at com.github.dockerjava.core.command.BuildImageResultCallback.getImageId(BuildImageResultCallback.java:71)
at com.github.dockerjava.core.command.BuildImageResultCallback.awaitImageId(BuildImageResultCallback.java:48)
at java_lang_reflect_Method$invoke.call(Unknown Source)
at java_lang_reflect_Method$invoke.call(Unknown Source)
at com.bmuschko.gradle.docker.utils.DockerThreadContextClassLoader$_createPrintStreamProxyCallback_closure12.doCall(DockerThreadContextClassLoader.groovy:577)
at com.sun.proxy.$Proxy160.invoke(Unknown Source)
at com.github.dockerjava.core.command.BuildImageResultCallback$$EnhancerByCGLIB$$994b76df.awaitImageId(<generated>)
at com.github.dockerjava.core.command.BuildImageResultCallback$$EnhancerByCGLIB$$994b76df$awaitImageId.call(Unknown Source)
at com.github.dockerjava.core.command.BuildImageResultCallback$$EnhancerByCGLIB$$48a3fefd$awaitImageId.call(Unknown Source)
at com.bmuschko.gradle.docker.tasks.image.DockerBuildImage.runRemoteCommand(DockerBuildImage.groovy:127)
at com.bmuschko.gradle.docker.tasks.AbstractDockerRemoteApiTask$_runReactiveStream_closure1.doCall(AbstractDockerRemoteApiTask.groovy:57)
at com.bmuschko.gradle.docker.utils.DockerThreadContextClassLoader.withClasspath(DockerThreadContextClassLoader.groovy:54)
at com.bmuschko.gradle.docker.utils.ThreadContextClassLoader$withClasspath.call(Unknown Source)
at com.bmuschko.gradle.docker.tasks.AbstractDockerRemoteApiTask.runInDockerClassPath(AbstractDockerRemoteApiTask.groovy:62)
at com.bmuschko.gradle.docker.tasks.AbstractDockerRemoteApiTask$runInDockerClassPath.callCurrent(Unknown Source)
at com.bmuschko.gradle.docker.tasks.AbstractDockerRemoteApiTask.runReactiveStream(AbstractDockerRemoteApiTask.groovy:56)
at com.bmuschko.gradle.docker.tasks.AbstractReactiveStreamsTask.start(AbstractReactiveStreamsTask.groovy:50)
at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:73)
at org.gradle.api.internal.project.taskfactory.DefaultTaskClassInfoStore$StandardTaskAction.doExecute(DefaultTaskClassInfoStore.java:141)
at org.gradle.api.internal.project.taskfactory.DefaultTaskClassInfoStore$StandardTaskAction.execute(DefaultTaskClassInfoStore.java:134)
at org.gradle.api.internal.project.taskfactory.DefaultTaskClassInfoStore$StandardTaskAction.execute(DefaultTaskClassInfoStore.java:123)
at org.gradle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.java:632)
at org.gradle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.java:615)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:95)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:76)
... 70 more
About this issue
- Original URL
- State: closed
- Created 7 years ago
- Comments: 15 (13 by maintainers)
Commits related to this issue
- Proposed fix for #830 — committed to dmitrygusev/docker-java by dmitrygusev 7 years ago
- Simplify the fix for #830 — committed to dmitrygusev/docker-java by dmitrygusev 7 years ago
- Proposed fix for #830 (#832) * Proposed fix for #830 * Simplify the fix for #830 — committed to docker-java/docker-java by dmitrygusev 7 years ago
- Merge branch 'master-docker-java' * master-docker-java: (25 commits) Add some coding styles. Allow an explicit Dockerfile location string to be specified to the build command (#825) Proposed fi... — committed to alien4cloud/docker-java by vuminhkh 7 years ago
- Proposed fix for #830 (#832) * Proposed fix for #830 * Simplify the fix for #830 — committed to TuKangTech/docker-java by dmitrygusev 7 years ago
Why would it fail if it’s an additive change? Previous versions will still be able to find the “Successfully built” string in the last
BuildResponseItem. New versions will find it in a line before the last.I’m not sure I understand what you mean by saying “how Docker CLI handles this”? I don’t think Docker CLI interprets the output anyhow, it just prints it to the stdout. And the way docker-java handles it – it just reads everything from that output stream and takes the last line. Or am I wrong here?
Btw, does this all work fine with multi-sage builds?
Yes, stuck with swarm tests. Also almost ready to do swarm releases… But tests…
@KostyaSha anything else I can do to get the proposed fix merged?