Browse Source

modified com.docker.compose.depends_on label to contain dependency type

Signed-off-by: Mehrad Dadar <[email protected]>
Mehrad Dadar 3 years ago
parent
commit
67f7b84829
2 changed files with 11 additions and 3 deletions
  1. 10 2
      pkg/compose/compose.go
  2. 1 1
      pkg/compose/create.go

+ 10 - 2
pkg/compose/compose.go

@@ -114,8 +114,16 @@ func (s *composeService) projectFromName(containers Containers, projectName stri
 		dependencies := c.Labels[api.DependenciesLabel]
 		if len(dependencies) > 0 {
 			service.DependsOn = types.DependsOnConfig{}
-			for _, d := range strings.Split(dependencies, ",") {
-				service.DependsOn[d] = types.ServiceDependency{Condition: ServiceConditionRunningOrHealthy}
+			for _, dc := range strings.Split(dependencies, ",") {
+				dcArr := strings.Split(dc, ":")
+				condition := ServiceConditionRunningOrHealthy
+				dependency := dcArr[0]
+
+				// backward compatibility
+				if len(dcArr) > 1 {
+					condition = dcArr[1]
+				}
+				service.DependsOn[dependency] = types.ServiceDependency{Condition: condition}
 			}
 		}
 		project.Services = append(project.Services, service)

+ 1 - 1
pkg/compose/create.go

@@ -433,7 +433,7 @@ func (s *composeService) prepareLabels(service types.ServiceConfig, number int)
 
 	var dependencies []string
 	for s := range service.DependsOn {
-		dependencies = append(dependencies, s)
+		dependencies = append(dependencies, s+":"+service.DependsOn[s].Condition)
 	}
 	labels[api.DependenciesLabel] = strings.Join(dependencies, ",")
 	return labels, nil