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?