[英]Relative path not working with named volumes in the docker-compose.yml
我需要使命名卷使用执行docker-compose
命令的文件夹的相对路径。
这是 docker-compose.yml 中的卷定义
volumes:
esdata1:
driver: local
driver_opts:
type: none
device: ./esdata1
o: bind
如果文件夹不存在,docker -compose似乎不会创建该文件夹,但即使在启动 docker 之前创建了该文件夹,我也总是收到此错误:
ERROR: for esdata Cannot create container for service esdata: error while mounting volume with options: type='none' device='./esdata1' o='bind': no such file or directory
注意:这可能很愚蠢,但esdata
是使用命名卷的服务
esdata:
...
volumes:
- esdata1:/usr/share/elasticsearch/data
...
我在这里缺少什么?
也许相对路径./
不指向执行docker-compose
的文件夹(我已经尝试使用~/
使用相对于用户家的文件夹,但我遇到了同样的错误)。
提前致谢,
PS:如果我使用绝对路径,它就像一个魅力
我遇到了完全相同的问题。 看来你没有做错什么。 这还没有在 Docker 中实现: https : //github.com/docker/compose/issues/6343
便携性不是很好...
如果您使用这样的命名绑定挂载,则必须包含文件的完整路径,例如:
volumes:
esdata1:
driver: local
driver_opts:
type: none
device: /home/username/project/esdata1
o: bind
该文件夹也必须提前存在。 这就是 linux 绑定挂载系统调用的工作方式,当您传递这样的标志时,您是在直接与 Linux 对话,而无需 docker 或 compose 进行任何路径扩展。
如果您只想从主机挂载目录,则使用主机卷将通过 compose 扩展为相对路径:
esdata:
...
volumes:
- ./esdata1:/usr/share/elasticsearch/data
...
虽然由于路径自动扩展,主机卷更易于移植,但您将失去命名卷的功能,其中 docker 使用图像内容(包括文件权限/所有权)初始化一个空的命名卷。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.