From b6fa2d447eab2d988904bb668d9d7876e4e2e8b9 Mon Sep 17 00:00:00 2001 From: YuviPanda Date: Thu, 13 Feb 2025 16:01:32 -0800 Subject: [PATCH] Simulate json output from docker buildx build We still use the docker python api to push images, and to run. So we need to set string_output to false, and simulate the json output on buildx. Alternatively we could completely get rid of the python API, but that's a much bigger lift (especially around registry credentials) that I don't want us to do right now. Without this, push progress is reported as raw bytes in the binderhub UI --- repo2docker/docker.py | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/repo2docker/docker.py b/repo2docker/docker.py index 7fcbc31e..b92f807d 100644 --- a/repo2docker/docker.py +++ b/repo2docker/docker.py @@ -58,7 +58,7 @@ class DockerEngine(ContainerEngine): https://docker-py.readthedocs.io/en/4.2.0/api.html#module-docker.api.build """ - string_output = True + string_output = False extra_init_args = Dict( {}, @@ -141,12 +141,18 @@ class DockerEngine(ContainerEngine): args += [d] - yield from execute_cmd(args, True) + for line in execute_cmd(args, True): + # Simulate structured JSON output from buildx build, since we + # do get structured json output from pushing and running + yield {"stream": line} else: # Assume 'path' is passed in args += [path] - yield from execute_cmd(args, True) + for line in execute_cmd(args, True): + # Simulate structured JSON output from buildx build, since we + # do get structured json output from pushing and running + yield {"stream": line} def images(self): images = self._apiclient.images()