首页/云/Docker 容器速查/compose include 复用其他文件
Compose 编排55 条

compose include 复用其他文件

较新的 Compose v2 支持顶层 include:把网络、监控等公共定义拆成独立文件后引入,多个项目可以共享同一份基础编排。

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

include 解决什么

较新的 Compose V2 支持顶层 include:把网络、监控、日志等公共定义拆到独立文件后引入,多个项目共享同一份基础编排。被 include 的文件与主文件合并成同一个项目,最终结果可以用 compose config 展开核对。

基本信息

字段include: [路径…] 或 [{path: …}]
路径语义相对引用方编排文件所在目录
支持版本较新的 Compose V2
核对方式docker compose config 展开查看
合并结果进入同一项目命名空间

典型使用场景

  • 多项目共享网络、日志、监控等基础定义,避免复制粘贴
  • 公共片段由平台团队维护,业务团队只写自己的服务
  • 迁移期渐进拆分庞大的单文件编排
  • 跨目录复用:把上级目录的公共编排引入当前项目
  • 基础文件加环境叠加文件组合出不同环境的编排

Compose 写法示例

Compose 写法示例
include:
  - path: ./infra/compose.network.yaml         # 公共网络定义
  - path: ../shared/compose.monitoring.yaml    # 上级目录的监控片段
services:
  api:
    image: app/api:1.4.2                       # 本项目自己的服务

核对合并结果

核对合并结果
docker compose config | head -40      # 展开 include 后的最终编排
docker compose config --services      # 确认服务清单与预期一致
docker compose up -d                  # 确认无误后再启动

使用要点

要点说明注意
路径基准相对引用方编排文件目录跨目录时容易算错
命名空间合并进同一项目服务重名会冲突
嵌套被包含文件可再有 include层数过深难以排查
版本要求需较新的 Compose V2旧版本不支持
被 include 的文件里的服务会进入同一个项目命名空间,服务重名会冲突;拆分时给公共片段的服务起有区分度的名字。
老版本 Compose 不支持 include,团队内版本基线要先统一,否则同一份编排在不同机器上行为不一致。
被包含的文件可以继续有自己的 include,但层数过深会让排障困难;一般控制在两层以内,并以 config 展开结果作为唯一事实来源。
include 只做文件级复用,不改变服务归属;需要按环境覆盖同一个服务时仍要用覆盖文件或 profiles,两种机制混用容易看不清最终结果。

易错点

  • 被 include 文件里的服务进入同一项目命名空间,重名服务会直接冲突
  • 老版本 Compose 不支持 include,版本基线不统一会导致同一份编排行为不一致
  • 跨目录引用时路径基准是引用方文件所在目录,算错会直接找不到文件
  • include 层数过深后排查困难,建议配合 compose config 的展开结果核对实际生效内容
  • 公共文件里的服务名与业务项目撞名时会直接冲突,拆分前先约定命名的前缀规则

数据来源与参考

  • Docker 官方文档:Compose include(docs.docker.com/compose/multiple-compose-files/include)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌