Selaa lähdekoodia

check if a missing image won't be build via a service declared in depends_on section

Signed-off-by: Guillaume Lours <[email protected]>
Guillaume Lours 3 vuotta sitten
vanhempi
sitoutus
a9e070206e
1 muutettua tiedostoa jossa 14 lisäystä ja 1 poistoa
  1. 14 1
      pkg/compose/pull.go

+ 14 - 1
pkg/compose/pull.go

@@ -271,7 +271,7 @@ func (s *composeService) pullRequiredImages(ctx context.Context, project *types.
 			eg.Go(func() error {
 				id, err := s.pullServiceImage(ctx, service, info, s.configFile(), w, quietPull)
 				pulledImages[i] = id
-				if err != nil && service.Build != nil {
+				if err != nil && isServiceImageToBuild(service, project.Services) {
 					// image can be built, so we can ignore pull failure
 					return nil
 				}
@@ -291,6 +291,19 @@ func (s *composeService) pullRequiredImages(ctx context.Context, project *types.
 	})
 }
 
+func isServiceImageToBuild(service types.ServiceConfig, services []types.ServiceConfig) bool {
+	if service.Build != nil {
+		return true
+	}
+
+	for _, depService := range services {
+		if depService.Image == service.Image && depService.Build != nil {
+			return true
+		}
+	}
+	return false
+}
+
 func toPullProgressEvent(parent string, jm jsonmessage.JSONMessage, w progress.Writer) {
 	if jm.ID == "" || jm.Progress == nil {
 		return