执行ddev start启动项目报错:卷已存在但非Docker Compose创建
问题根因
该报错与你使用的版本组合直接相关:ddev v1.18.0发布时默认适配Docker Compose V1版本,而Docker Compose 2.2.0新增了卷归属校验逻辑,会判定ddev自动生成的数据库卷不是Compose自身创建的,因此触发拦截报错,和Docker 20.10.11版本无关。
可用解决方案
你可以根据自己的使用场景任选以下一种方案处理:
- 临时清理冲突卷:先确认无需保留现有项目数据库数据,执行命令删除冲突卷即可启动
# 仅删除当前项目冲突卷 docker volume rm lmp-mariadb # 如果所有项目都有同类报错,批量删除所有ddev相关遗留卷 docker volume ls | grep ddev | awk '{print $2}' | xargs docker volume rm - 版本适配方案1:降级Docker Compose到v1.29.2,这是Docker Compose V1的最终稳定版,和ddev v1.18.0完全兼容,无此类校验问题
- 版本适配方案2:升级ddev到v1.18.2及以上版本,该版本之后官方已完成Docker Compose V2适配,无需额外配置即可正常启动
- 临时适配方案:若不想调整版本,可在当前项目的
.ddev目录下新建docker-compose.override.yaml文件,添加以下内容即可跳过校验
该方案仅对当前项目生效,新项目需要重复配置。volumes: lmp-mariadb: external: true
内容的提问来源于stack exchange,提问作者Dragan Petrovic FSD
相关产品推荐
相关产品推荐

