diff --git a/reference/normalize.go b/reference/normalize.go index 43170e6f9..f2ce13ada 100644 --- a/reference/normalize.go +++ b/reference/normalize.go @@ -125,7 +125,7 @@ func ParseDockerRef(ref string) (Named, error) { // needs to be already validated before. func splitDockerDomain(name string) (domain, remainder string) { i := strings.IndexRune(name, '/') - if i == -1 || (!strings.ContainsAny(name[:i], ".:") && name[:i] != "localhost" && strings.ToLower(name[:i]) == name[:i]) { + if i == -1 || (!strings.ContainsAny(name[:i], ".:") && name[:i] != localhost && strings.ToLower(name[:i]) == name[:i]) { domain, remainder = defaultDomain, name } else { domain, remainder = name[:i], name[i+1:] diff --git a/reference/regexp.go b/reference/regexp.go index 2974b1eb4..cb8a048ff 100644 --- a/reference/regexp.go +++ b/reference/regexp.go @@ -19,6 +19,10 @@ const ( // supported names. separator = `(?:[._]|__|[-]*)` + // localhost is treated as a special value for domain-name. Any other + // domain-name without a "." or a ":port" are considered a path component. + localhost = `localhost` + // domainNameComponent restricts the registry domain component of a // repository name to start with a component as defined by DomainRegexp. domainNameComponent = `(?:[a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9-]*[a-zA-Z0-9])`