Docker Compose 5.7.0(2026-11-02)给服务网络条目加了 use_service_name_alias。写成 false 后,服务名不再注册成该网络上的 DNS 别名;容器名和你手写的 aliases 仍在。
5.6.1 不认这个字段,直接校验失败退出 1。默认行为两边都一样:服务名会进 DNS。官方 PR #14342 对齐 compose-spec,方便多个项目共用一张外部网络时,各自起同名服务又不抢 web / db 这类短名。下面用官方二进制 5.6.1 对照 5.7.0,再用 Spring Boot 4.1.2 读 docker inspect 里的 DNSNames。
5.6.1:字段直接拒收
compose 文件在共享外部网络上给 web 写了 use_service_name_alias: false 和自定义别名 web-custom。5.6.1 的 up -d:
validating ... additional properties 'use_service_name_alias' not allowed
RC_56_OPTOUT=1
5.7.0 默认:服务名在 DNS 里
同一张外部网络,不写该字段时,DNSNames 里有服务名 web:
DEFAULT_DNSNAMES=["c570aliasdef-web-1","web","…"]
DEFAULT_ALIASES=["c570aliasdef-web-1","web"]
Boot 4.1.2 解析 inspect JSON:
BOOT=4.1.2
PROBE_LABEL=default-web
DNSNAMES=c570aliasdef-web-1,web,…
HAS_SERVICE_ALIAS_web=true
ASSERT=PASS
5.7.0 关掉:短名消失,自定义别名还在
use_service_name_alias: false 且 aliases: [web-custom] 之后:
OPTOUT_DNSNAMES=["c570aliasout-web-1","web-custom","…"]
OPTOUT_ALIASES=["c570aliasout-web-1","web-custom"]
getent_web=MISS
getent_web_custom=HIT
Boot 对照:
BOOT=4.1.2
PROBE_LABEL=optout-web
DNSNAMES=c570aliasout-web-1,web-custom,…
HAS_SERVICE_ALIAS_web=false
ASSERT=PASS
字段默认是 true,老文件不用改。只在某一张网上关掉短名时,用长语法写在该网络条目下;容器名别名和其他网络不受影响。compose run --use-aliases 仍决定这次 run 要不要带别名。
一起交流
分享你的思考,让讨论更进一步。