Skip to content

Commit 73ebbff

Browse files
freeformzglours
authored andcommitted
Don't share the options map
Without this I get an exception when building multiple images in a compose run. ``` fatal error: concurrent map writes goroutine 16 [running]: github.com/docker/compose/v2/pkg/compose.(*composeService).build.func1({0x2cba4e0, 0xc00019b2c0}, {0xc000233150?, 0xd?}) github.com/docker/compose/v2/pkg/compose/build.go:95 +0x652 github.com/docker/compose/v2/pkg/compose.(*graphTraversal).run.func1() github.com/docker/compose/v2/pkg/compose/dependencies.go:127 +0x63 golang.org/x/sync/errgroup.(*Group).Go.func1() golang.org/x/[email protected]/errgroup/errgroup.go:75 +0x64 created by golang.org/x/sync/errgroup.(*Group).Go golang.org/x/[email protected]/errgroup/errgroup.go:72 +0xa5 ... ``` I'm not sure why the map is currently shared, but with this patch applied my docker-compose build run works. Signed-off-by: Edward Muller <[email protected]>
1 parent fbbc0de commit 73ebbff

File tree

1 file changed

+1
-2
lines changed

1 file changed

+1
-2
lines changed

pkg/compose/build.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,6 @@ func (s *composeService) Build(ctx context.Context, project *types.Project, opti
4848
}
4949

5050
func (s *composeService) build(ctx context.Context, project *types.Project, options api.BuildOptions) error {
51-
opts := map[string]build.Options{}
5251
args := flatten(options.Args.Resolve(envResolver(project.Environment)))
5352

5453
return InDependencyOrder(ctx, project, func(ctx context.Context, name string) error {
@@ -92,7 +91,7 @@ func (s *composeService) build(ctx context.Context, project *types.Project, opti
9291
Attrs: map[string]string{},
9392
}}
9493
}
95-
opts[imageName] = buildOptions
94+
opts := map[string]build.Options{imageName: buildOptions}
9695
_, err = s.doBuild(ctx, project, opts, options.Progress)
9796
return err
9897
}, func(traversal *graphTraversal) {

0 commit comments

Comments
 (0)