From 1139e55f2a65bbf734d08a467a270590cba8575d Mon Sep 17 00:00:00 2001 From: Guillaume Lours Date: Wed, 29 Jul 2026 14:47:42 +0200 Subject: [PATCH] fix(cp): return non-nil Content from dry-run CopyFromContainer The caller in pkg/compose/cp.go unconditionally defers res.Content.Close() once the call succeeds. The dry-run client returned a zero-value result with a nil Content reader, so `docker compose cp --dry-run : ` panicked with a nil pointer dereference. Return an empty NopCloser instead, matching the pattern already used for the other stream results in this file. Signed-off-by: Guillaume Lours --- pkg/dryrun/dryrunclient.go | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/pkg/dryrun/dryrunclient.go b/pkg/dryrun/dryrunclient.go index ac7f9384fc..f791a2d9e2 100644 --- a/pkg/dryrun/dryrunclient.go +++ b/pkg/dryrun/dryrunclient.go @@ -191,7 +191,9 @@ func (d *DryRunClient) CopyFromContainer(ctx context.Context, container string, if _, err := d.ContainerStatPath(ctx, container, client.ContainerStatPathOptions{Path: options.SourcePath}); err != nil { return client.CopyFromContainerResult{}, fmt.Errorf("could not find the file %s in container %s", options.SourcePath, container) } - return client.CopyFromContainerResult{}, nil + return client.CopyFromContainerResult{ + Content: io.NopCloser(bytes.NewReader(nil)), + }, nil } func (d *DryRunClient) CopyToContainer(ctx context.Context, container string, options client.CopyToContainerOptions) (client.CopyToContainerResult, error) {