首页/云/Docker 容器速查/compose 项目名与资源命名
Compose 编排55 条

compose 项目名与资源命名

项目名决定容器/网络/卷的前缀:默认取目录名,可用 -p、COMPOSE_PROJECT_NAME 或顶层 name 字段覆盖;改名前先评估资源重建影响。

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

项目名决定什么

项目名决定 Compose 创建的容器、网络与卷的名称前缀。默认取当前目录名,可以用 -p 参数、COMPOSE_PROJECT_NAME 环境变量或文件顶层的 name 字段覆盖,优先级依次递减。同一台机器上跑多套环境就是靠项目名隔离,避免容器、网络与卷互相撞名。

基本信息

优先级-p 参数 > COMPOSE_PROJECT_NAME > 顶层 name 字段 > 目录名
影响范围容器、网络、卷的命名前缀
查看方式docker compose ls 与 docker ps 的 label 过滤
常见用途同机多环境隔离、CI 每条流水线独立命名
生效特点项目名变化相当于创建一套新资源

典型使用场景

  • 同机区分开发与测试环境,避免资源撞名
  • CI 里为每条流水线指定独立项目名
  • 排查容器名前缀看不懂的问题
  • 迁移目录后名称变化导致的资源重建
  • 清理某个项目下的全部资源

指定与核对

指定与核对
docker compose -p shop up -d                              # 显式指定项目名
COMPOSE_PROJECT_NAME=shop docker compose up -d            # 环境变量方式
docker compose ls                                          # 列出当前项目
docker ps --filter label=com.docker.compose.project=shop   # 查该项目下的容器
docker compose -p shop down                                # 清理时留意卷的处理

来源与优先级

来源优先级说明
-p 参数最高单次命令生效,适合脚本
COMPOSE_PROJECT_NAME次高环境变量,适合 CI 统一注入
顶层 name 字段再次写进文件,团队共享
目录名默认改目录名会连带改变项目名
同一机器上的多套环境靠项目名隔离,容器、网络与卷各有一套独立的命名空间,互不干扰。
项目名参与资源命名并影响卷名,改名相当于换了一套资源,动手前先确认原有数据卷的处理方式。

使用建议

  • 多套环境共用一台宿主时,用不同项目名把资源彻底隔开
  • 流水线里为每次运行注入唯一项目名,结束后按同名清理,避免资源残留
  • 改名之前先列出旧项目下的容器、网络与卷,确定处理方案
  • 把项目名写进部署文档与脚本默认值,减少人为差异

易错点

  • 换项目名后继续 up:等于新起一套资源,旧容器与卷仍在,容易出现端口冲突与数据分裂
  • 自动化脚本依赖默认目录名:改目录名会连带改项目名,流水线行为随之变化
  • 清理时误删数据卷:项目名对应的卷可能承载业务数据,清理命令要看是否涉及卷
  • 只改环境变量不核对结果:不同终端加载的环境不同,同一份文件出现两种项目名

数据来源与参考

  • Docker 官方文档:Compose project name(docs.docker.com/compose/project-name)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌