|
|
@@ -276,14 +276,9 @@ func (s *composeService) waitDependencies(ctx context.Context, project *types.Pr
|
|
|
eg, _ := errgroup.WithContext(ctx)
|
|
|
w := progress.ContextWriter(ctx)
|
|
|
for dep, config := range dependencies {
|
|
|
- if config.Condition == types.ServiceConditionStarted {
|
|
|
- // already managed by InDependencyOrder
|
|
|
- continue
|
|
|
- }
|
|
|
- if service, err := project.GetService(dep); err != nil {
|
|
|
+ if shouldWait, err := shouldWaitForDependency(dep, config, project); err != nil {
|
|
|
return err
|
|
|
- } else if service.Scale == 0 {
|
|
|
- // don't wait for the dependency which configured to have 0 containers running
|
|
|
+ } else if !shouldWait {
|
|
|
continue
|
|
|
}
|
|
|
|
|
|
@@ -340,6 +335,20 @@ func (s *composeService) waitDependencies(ctx context.Context, project *types.Pr
|
|
|
return eg.Wait()
|
|
|
}
|
|
|
|
|
|
+func shouldWaitForDependency(serviceName string, dependencyConfig types.ServiceDependency, project *types.Project) (bool, error) {
|
|
|
+ if dependencyConfig.Condition == types.ServiceConditionStarted {
|
|
|
+ // already managed by InDependencyOrder
|
|
|
+ return false, nil
|
|
|
+ }
|
|
|
+ if service, err := project.GetService(serviceName); err != nil {
|
|
|
+ return false, err
|
|
|
+ } else if service.Scale == 0 {
|
|
|
+ // don't wait for the dependency which configured to have 0 containers running
|
|
|
+ return false, nil
|
|
|
+ }
|
|
|
+ return true, nil
|
|
|
+}
|
|
|
+
|
|
|
func nextContainerNumber(containers []moby.Container) (int, error) {
|
|
|
max := 0
|
|
|
for _, c := range containers {
|