diff --git a/loader/validate_test.go b/loader/validate_test.go index 50e9df6a..521207bf 100644 --- a/loader/validate_test.go +++ b/loader/validate_test.go @@ -381,7 +381,7 @@ func TestValidateContainerName(t *testing.T) { }, } err := project.CheckContainerNameUnicity() - assert.Assert(t, strings.Contains(err.Error(), `container name "mycontainer" is already in use by`)) + assert.Assert(t, strings.Contains(err.Error(), `container name "mycontainer" is already in use by service "myservice`)) } func TestValidateWatch(t *testing.T) { diff --git a/types/project.go b/types/project.go index fad8f985..ec617692 100644 --- a/types/project.go +++ b/types/project.go @@ -1026,13 +1026,14 @@ func (p *Project) WithServicesTransform(fn func(name string, s ServiceConfig) (S // CheckContainerNameUnicity validate project doesn't have services declaring the same container_name func (p *Project) CheckContainerNameUnicity() error { - names := utils.Set[string]{} - for name, s := range p.Services { + names := map[string]string{} + for _, name := range p.ServiceNames() { + s := p.Services[name] if s.ContainerName != "" { if existing, ok := names[s.ContainerName]; ok { - return fmt.Errorf(`services.%s: container name %q is already in use by service %s"`, name, s.ContainerName, existing) + return fmt.Errorf(`services.%s: container name %q is already in use by service %q`, name, s.ContainerName, existing) } - names.Add(s.ContainerName) + names[s.ContainerName] = name } } return nil