diff --git a/local/compose.go b/local/compose.go index 407d239e..b4a59676 100644 --- a/local/compose.go +++ b/local/compose.go @@ -176,7 +176,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 } @@ -675,6 +675,9 @@ func (s *composeService) ensureNetwork(ctx context.Context, n types.NetworkConfi _, err := s.apiClient.NetworkInspect(ctx, n.Name, moby.NetworkInspectOptions{}) 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) + } createOpts := moby.NetworkCreate{ // TODO NameSpace Labels Labels: n.Labels, diff --git a/local/convergence.go b/local/convergence.go index 9e353221..94c768df 100644 --- a/local/convergence.go +++ b/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 }