浏览代码

Container networks: prefix network name only for internal networks or when name set (different from yaml key). No need to prefix again when connecting containers

Signed-off-by: Guillame Tardif <[email protected]>
Guillame Tardif 4 年之前
父节点
当前提交
b1970f618c
共有 2 个文件被更改,包括 5 次插入6 次删除
  1. 2 3
      local/compose.go
  2. 3 3
      local/convergence.go

+ 2 - 3
local/compose.go

@@ -59,7 +59,7 @@ func (s *composeService) Up(ctx context.Context, project *types.Project, detach
 		return err
 	}
 	for k, network := range project.Networks {
-		if !network.External.External && network.Name != "" {
+		if !network.External.External && network.Name == k {
 			network.Name = fmt.Sprintf("%s_%s", project.Name, k)
 			project.Networks[k] = network
 		}
@@ -559,9 +559,8 @@ func (s *composeService) ensureNetwork(ctx context.Context, n types.NetworkConfi
 	if err != nil {
 		if errdefs.IsNotFound(err) {
 			if n.External.External {
-				return fmt.Errorf("Network %s declared as external, but could not be found", n.Name)
+				return fmt.Errorf("network %s declared as external, but could not be found", n.Name)
 			}
-
 			createOpts := moby.NetworkCreate{
 				// TODO NameSpace Labels
 				Labels:     n.Labels,

+ 3 - 3
local/convergence.go

@@ -240,9 +240,9 @@ func (s *composeService) runContainer(ctx context.Context, project *types.Projec
 		return err
 	}
 	id := created.ID
-	for net := range service.Networks {
-		name := fmt.Sprintf("%s_%s", project.Name, net)
-		err = s.connectContainerToNetwork(ctx, id, service.Name, name)
+	for netName := range service.Networks {
+		network := project.Networks[netName]
+		err = s.connectContainerToNetwork(ctx, id, service.Name, network.Name)
 		if err != nil {
 			return err
 		}