问题描述
在尝试创建一个卷(volume)以在多个容器之间共享,并将该卷绑定到主机的某个位置。然而,每次运行docker-compose up
命令时,都会出现如下错误提示:
In file '.\docker-compose.yml', service 'volumes' must be a mapping not an array.
用户迄今为止还未理解这个问题的原因。以下是用户的docker-compose.yml
文件内容:
version : '3.4'
services:
testando-volume-compartilhado-a:
image: carloshenriquecarniatto/teste:latest
volumes:
- D:\App:/app
ports:
- "10001:80"
- "44378:443"
解决方案
请注意以下操作可能涉及版本差异及修改前做好备份。
方案1
根据回答中的提示,问题可能出在yaml
文件中的缩进和格式。你可以尝试修改volumes
的缩进以及路径的格式。在volumes
下的路径部分,你可以将原来的形式改为以-
开头,表示一个列表项,并将路径和目标位置分开,中间用:
隔开,如下所示:
version : '3.4'
services:
testando-volume-compartilhado-a:
image: carloshenriquecarniatto/teste:latest
volumes:
- D:\App:/app
ports:
- "10001:80"
- "44378:443"
在这个方案中,我们将volumes
下的路径修改为列表的形式,确保正确的缩进。
方案2
还有一种可能是路径中的:
符号可能导致了yaml
解析错误。你可以尝试将路径中的:
符号替换为其他字符,再运行docker-compose up
命令。注意,这可能会导致路径问题,所以请确保替换后的路径在系统中是存在的。
version : '3.4'
services:
testando-volume-compartilhado-a:
image: carloshenriquecarniatto/teste:latest
volumes:
- D_App:/app
ports:
- "10001:80"
- "44378:443"
这个方案中,我们将路径中的:
替换为了_
,以避免解析问题。
方案3
还有一种可能是缩进不正确。根据评论中的提示,你可以检查缩进是否一致,特别是在volumes
、ports
和image
等属性之间。
version : '3.4'
services:
testando-volume-compartilhado-a:
image: carloshenriquecarniatto/teste:latest
volumes:
- D:\App:/app
ports:
- "10001:80"
- "44378:443"
在这个方案中,我们将缩进保持一致,确保各个属性之间的格式正确。
请根据上述方案尝试修复问题,并再次运行docker-compose up
命令。如果问题仍然存在,你可能需要查阅Docker Compose的文档或寻求进一步的帮助来解决问题。
正文完