only report pull progress if we have something to pull
@@ -162,15 +162,13 @@ func (s *composeService) pullRequiredImages(ctx context.Context, project *types.
info.IndexServerAddress = registry.IndexServer
}
- return progress.Run(ctx, func(ctx context.Context) error {
- w := progress.ContextWriter(ctx)
- eg, ctx := errgroup.WithContext(ctx)
+ var needPull []types.ServiceConfig
for _, service := range project.Services {
if service.Image == "" {
continue
}
switch service.PullPolicy {
- case types.PullPolicyMissing, types.PullPolicyIfNotPresent:
+ case "", types.PullPolicyMissing, types.PullPolicyIfNotPresent:
if _, ok := images[service.Image]; ok {
continue
}
@@ -179,6 +177,16 @@ func (s *composeService) pullRequiredImages(ctx context.Context, project *types.
case types.PullPolicyAlways:
// force pull
}
+ needPull = append(needPull, service)
+ }
+ if len(needPull) == 0 {
+ return nil
+ }
+
+ return progress.Run(ctx, func(ctx context.Context) error {
+ w := progress.ContextWriter(ctx)
+ eg, ctx := errgroup.WithContext(ctx)
+ for _, service := range needPull {
service := service
eg.Go(func() error {
err := s.pullServiceImage(ctx, service, info, s.configFile, w, quietPull)
