启动 Docker Compose 前,可以先用 config --quiet 校验合并结果

67 次浏览3 条回复

改了多个 compose.yml 或环境变量文件后,不想一上来就启动服务,可以先跑:

docker compose config --quiet

它会解析并校验最终合并后的配置,成功时基本不输出;缩进、变量替换或字段写错时会直接报错。想顺便看展开后的完整配置,可以去掉 --quiet。

环境:Docker Compose v2。这个命令只做配置检查,不会创建容器;如果依赖 .env 或 --env-file,记得用和实际启动时一致的参数。

还可以配合 --no-interpolate 排查变量问题:先用正常的 config 看展开后的最终值,再用 config --quiet 做校验。要确认 Compose 实际读取了哪些文件,docker compose config --services 也很直观。注意 config 的输出可能包含环境变量里的敏感值,贴日志前最好先脱敏。

我会把这一步放进 CI,但会把它当“静态配置校验”而不是启动前的全量检查:

docker compose -f compose.yml -f compose.ci.yml --env-file .env.ci config --quiet

这样能先挡住 YAML、变量替换和合并后的字段问题,但镜像是否能拉下来、端口是否被占用、服务启动后是否健康,还是得留给后面的构建或集成测试。

CI 里还有个容易漏的点:-f 的顺序会影响最终合并结果,基础文件放前面、环境覆盖文件放后面更稳。最好把这串参数固定在脚本里,不要依赖工作目录或本机默认文件。这样本地能过、CI 合并错文件的情况会少一些。