@@ -25,7 +25,6 @@ import (
2525 "errors"
2626 "fmt"
2727 "io"
28- "math/rand"
2928 "os"
3029 "os/exec"
3130 "path/filepath"
@@ -41,6 +40,7 @@ import (
4140 "github.com/docker/compose/v2/pkg/progress"
4241 "github.com/docker/docker/api/types/versions"
4342 "github.com/docker/docker/builder/remotecontext/urlutil"
43+ "github.com/google/uuid"
4444 "github.com/moby/buildkit/client"
4545 gitutil "github.com/moby/buildkit/frontend/dockerfile/dfgitutil"
4646 "github.com/moby/buildkit/util/progress/progressui"
@@ -293,10 +293,15 @@ func (s *composeService) doBuildBake(ctx context.Context, project *types.Project
293293 for {
294294 // we don't use os.CreateTemp here as we need a temporary file name, but don't want it actually created
295295 // as bake relies on atomicwriter and this creates conflict during rename
296- metadataFile = filepath .Join (os .TempDir (), fmt .Sprintf ("compose-build-metadataFile-%d.json" , rand .Int31 ()))
297- if _ , err = os .Stat (metadataFile ); os .IsNotExist (err ) {
298- break
296+ metadataFile = filepath .Join (os .TempDir (), fmt .Sprintf ("compose-build-metadataFile-%s.json" , uuid .New ().String ()))
297+ if _ , err = os .Stat (metadataFile ); err != nil {
298+ if os .IsNotExist (err ) {
299+ break
300+ } else {
301+ return nil , fmt .Errorf ("failed to check metadata file %s already exists: %w" , metadataFile , err )
302+ }
299303 }
304+ logrus .Debugf ("metadata file already exists: %s" , metadataFile )
300305 }
301306 defer func () {
302307 _ = os .Remove (metadataFile )
@@ -369,9 +374,13 @@ func (s *composeService) doBuildBake(ctx context.Context, project *types.Project
369374 for {
370375 line , readErr := reader .ReadString ('\n' )
371376 if readErr != nil {
372- if readErr == io .EOF {
377+ switch {
378+ case errors .Is (err , io .EOF ):
373379 break
374- } else {
380+ case errors .Is (err , os .ErrClosed ):
381+ logrus .Debugf ("bake stopped" )
382+ break
383+ default :
375384 return nil , fmt .Errorf ("failed to execute bake: %w" , readErr )
376385 }
377386 }
0 commit comments