首页/云/Docker 容器速查/compose 默认文件名与查找顺序
Compose 编排55 条

compose 默认文件名与查找顺序

Compose 默认按固定顺序查找编排文件:compose.yaml / compose.yml 优先于 docker-compose.yml / docker-compose.yaml;同目录存在多个候选会直接报错。

Docker 容器速查云更新于 2026-10-13

文件名的查找规则

编排命令按固定顺序查找文件:新版命名优先于旧版命名。如果同一目录里存在多个候选文件,命令会直接报错,而不是静默挑选一个。因此从旧项目迁移时,先把不再使用的候选文件删掉或移出目录,再执行命令,否则很容易把文件选择歧义误读成语法问题。

基本信息

查找顺序新版命名优先,其次是旧版命名
多文件并存报存在多个候选配置文件的错误
指定文件用 -f 参数指定,可多次叠加
推荐做法新项目统一使用新版命名
脚本建议显式指定文件路径,不依赖工作目录

典型使用场景

  • 从旧命名迁移到新命名
  • 排查报错究竟是文件选择歧义还是语法错误
  • 在流水线里显式指定文件路径
  • 多环境通过多个文件叠加配置
  • 统一团队内的文件命名规范

确认与指定

确认与指定
ls compose.yaml docker-compose.yml 2>/dev/null     # 先看目录里有哪些候选文件
# 报错形态:found multiple config files with supported names
docker compose -f compose.yaml config -q             # 显式指定文件并做语法校验
docker compose -f compose.yaml -f compose.prod.yaml config   # 多文件叠加,后者覆盖同名项

情况与处理

情况行为处理
只有一个新版命名文件正常运行推荐状态
只有一个旧版命名文件可以运行,可能带提示逐步迁移到新命名
多个候选并存直接报错删除或移出多余的候选文件
显式指定文件忽略查找顺序脚本与流水线的最佳实践
新项目统一使用新版命名;迁移时先删除不再使用的另一个候选文件,避免出现选择歧义。
脚本没有显式指定文件时,行为依赖当前工作目录;流水线里建议固定文件路径,避免执行目录变化导致加载不同文件。

规范建议

  • 项目目录里只保留一个编排文件,备份文件放到项目之外
  • 脚本与流水线统一显式指定文件,不依赖默认查找
  • 多环境配置用叠加方式组织,并固定叠加顺序
  • 命名规范写进项目模板,避免新旧混用

易错点

  • 新旧两个文件并存:命令直接失败,看着像语法问题,实际是文件选择歧义
  • 脚本依赖当前目录:执行目录不同会加载不同文件,部署结果不一致
  • 迁移时把旧文件留在项目目录当备份:同样会触发歧义,应移到项目之外
  • 多文件叠加顺序搞反:后面的文件覆盖前面的同名配置,实际生效值与预期不符

数据来源与参考

  • Docker 官方文档:Compose 文件查找规则(docs.docker.com/compose/compose-file)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌