fix: concurrent map writes when pulling

Signed-off-by: skanehira <sho19921005@gmail.com>
This commit is contained in:
skanehira 2025-04-17 11:13:23 +09:00 committed by Nicolas De loof
parent a96c305b25
commit bf6b447263

View File

@ -24,6 +24,7 @@ import (
"fmt"
"io"
"strings"
"sync"
"time"
"github.com/compose-spec/compose-go/v2/types"
@ -322,9 +323,12 @@ func (s *composeService) pullRequiredImages(ctx context.Context, project *types.
eg, ctx := errgroup.WithContext(ctx)
eg.SetLimit(s.maxConcurrency)
pulledImages := map[string]api.ImageSummary{}
var mutex sync.Mutex
for name, service := range needPull {
eg.Go(func() error {
id, err := s.pullServiceImage(ctx, service, s.configFile(), w, quietPull, project.Environment["DOCKER_DEFAULT_PLATFORM"])
mutex.Lock()
defer mutex.Unlock()
pulledImages[name] = api.ImageSummary{
ID: id,
Repository: service.Image,