为何执行docker-compose build时出现“Volumes must be mapping”错误?
问题原因与解决方法
你的docker-compose.yml里顶层volumes块的语法写错了,这就是触发“Volumes must be mapping”错误的核心原因。
错误的写法:
volumes: - dev-db-data: - dev-static-data:
正确的写法:
顶层volumes是用来声明命名卷的,不需要用列表项的短横线-,直接写成键值形式即可:
volumes: dev-db-data: dev-static-data:
为什么会报错?
Docker Compose里,顶层volumes的语法规则和services内部的卷挂载不同:
- services里的
volumes是挂载列表,所以用-开头的条目; - 顶层
volumes是命名卷的声明集合,每个卷名直接作为配置项的键,不需要加-。你之前的写法让Compose误以为这是要映射的卷条目,格式不符合要求,因此抛出错误。
另外补充:你services里的卷挂载配置(比如- dev-static-data:/backend/django_static)是完全正确的,不需要修改。
内容的提问来源于stack exchange,提问作者Conor Romano
相关产品推荐
相关产品推荐

