Docker Compose YAML无语义补全是因为未绑定官方Schema;需在.vscode/settings.json中配置compose-spec的HTTPS Schema地址,匹配docker-compose.yml等文件名,启用后才支持字段级提示、类型校验和悬停说明。
Docker Compose 的 YAML 文件默认没有语义级补全,必须靠插件 + Schema 绑定才能实现字段级提示
docker
-compose.yml 为什么没补全?不是插件没装,是没配 Schema
VS Code 的 Docker 扩展(
)本身不提供
的字段补全——它只管镜像、容器操作和
。YAML 补全依赖的是 VS Code 的 YAML 支持 + 外部 Schema 定义。
没配 Schema 时,你只能靠 YAML 基础缩进提示和拼写联想,
下该填
还是
?不会弹出来
配了官方 Schema 后,输入
就能触发
,点进去还有字段说明、类型约束、是否必填等悬停提示
Schema 地址必须用
(注意不是旧版 docker.github.io 的地址,后者已失效)
如何手动绑定 compose 文件的 Schema(推荐项目级配置)
在项目根目录下创建
,加入以下内容:
路径匹配支持通配符,
和
都会被识别
不要用
这种写法——VS Code 的
不支持 glob 模式,只认字面量或简单通配
改完保存后,重新打开
文件,右下角语言模式应显示为
(不是纯 YAML)
补全失效的三个高频原因
即使 Schema 配对了,仍可能看不到字段提示,常见卡点如下:
Docker Sandbox
创建并管理 Docker 沙箱虚拟机环境以安全执行代理。适用于运行不受信任代码、探索包或隔离代理工作负载。支持 Claude、Codex、Copilot、Gemini 和 Kiro 代理,并提供网络代理控制。
下载
顶部写了
注释?删掉。它会覆盖
中的配置,且容易写错 URL 或格式不合法
文件里用了
这类老版本号?新版 Schema 默认适配 Compose Spec 1.x(即
及以上),老版本字段(如
)直接不提示
VS Code 正在用其他 YAML 插件(比如
)接管了语言服务?检查设置中
和
是否被覆盖,优先禁用非官方 YAML 插件
补全能做什么,不能做什么
Schema 补全解决的是“写对”,不是“写好”:
✅ 能提示
的完整路径,并标出单位(
/
)
✅ 能警告
里写了
(缺冒号)这类语法错误
❌ 不能告诉你
是否适合你的数据库服务——那是架构判断
❌ 不能自动补全镜像名(如
)或网络名(如
)——这些是运行时信息,不在 Schema 范围内
真正容易被忽略的是:Schema 文件本身不会随 Docker Compose CLI 升级自动更新。如果你用了
(v2 命令)的新字段(如
扩展),它们不会出现在当前 Schema 中——得等 compose-spec 仓库合并 PR 并发布新版本 JSON Schema。
ms-vscode.dockerdocker-compose.ymlDockerfilebuildcontextdockerfiledepdepends_onhttps://raw.githubusercontent.com/compose-spec/compose-spec/master/schema.json.vscode/settings.json{
"yaml.schemas": {
"https://raw.githubusercontent.com/compose-spec/compose-spec/master/schema.json": [
"docker-compose.yml",
"docker-compose.*.yml",
"compose.yaml",
"compose.*.yaml"
]
}
}docker-compose.prod.ymlcompose.override.yaml**/docker-compose.ymlyaml.schemasdocker-compose.ymlYAML (Compose)docker-compose.yml# yaml-language-server: $schema=https://...settings.jsonversion: '2.4'version: '3.8'extendsredhat.vscode-yamlyaml.format.provideryaml.schemasservices.web.deploy.resources.limits.memory512m1gports- 8080restart: on-failurepostgres:15myapp_defaultdocker composex-deploy