seo 优化:

  • docker compose 的服务名应该使用下划线还是中划线
  • docker 的容器名应该使用下划线还是中划线

使用 minio + docker compose的时候,

我把 minio 的 service name 叫做 public_minio

python 进程和 minio server 在一个 docker-compose.yaml 里面

然后 python 进程使用 public_minio:9000 作为 end_point 访问这个 minio server

但是就报错了 invalid hostname

ceo 优化: python minio error docker service name docker-compose end_point invalid hostname

我就百思不得起解,直接在 python 容器中,使用 ping public_minio 也是没有问题的;使用 nc -zv public_minio 9000 也是 ok 的

但是使用 minio 的 python sdk 访问 minio server 就是报错 invalid hostname


然后我就把项目中所有的 public_minio 替换成了 image-search-engine-minio,发现居然一切正常了

报错 service name 也换成 image-search-engine-minio

所以我怀疑是 _ 的问题,所以我问了一下 chatGPT 和 文心一言: 「hostname 有不能使用下划线的规定吗?」

文心一言的回答

hostname规定不允许使用下划线。主机名只允许包含ASCII字符里的数字0-9,字母a-zA-Z,连字符-和.。其他都不允许。例如,不允许出现其他标点符号,不允许空格,不允许中文字符。主机名的开头和结尾字符不允许是连字符。建议主机名不要以数字开头。

chatGPT 的回答

在大多数操作系统中,主机名(hostname)是有一些规则和约定的,但关于使用下划线的规定可以因操作系统和网络环境而异。一般来说,主机名应该遵循以下规则:

  1. 由字母、数字和短横线(减号)组成:主机名通常只能包含字母(A-Z,a-z)、数字(0-9)和短横线(-)。其他特殊字符如下划线(_)、空格等通常是不被允许的。
  2. 长度限制:主机名的长度通常受到限制,通常在 63 个字符以内。
  3. 首尾字符规则:主机名通常不应以短横线开头或结尾。
  4. 不区分大小写:主机名通常是不区分大小写的,这意味着"Example.com" 和 "example.com" 被视为相同的主机名。

虽然下划线字符在主机名中通常是不被建议的,但在某些操作系统和网络环境下,它们可能是允许的。但是,为了确保最广泛的兼容性,最好遵循常规的主机名规则,使用字母、数字和短横线来构成主机名。

不同的操作系统和网络服务可能对主机名的规则有所不同,因此在特定环境中,可能会有一些例外。建议查看特定操作系统或网络服务的文档以了解其主机名规则和限制。


这里还有一个更详细的资料 闲聊 DNS 系统中域名的格式标准:下划线“_”是被允许的吗?


universe_king
3.4k 声望680 粉丝