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 要不要带别名。

参考来源

— 感谢阅读 —
广告

一起交流

分享你的思考,让讨论更进一步。