使用docker-compose synthax的v2,我们能够做到这样的事情:
version: '2'
services:
app:
image: tianon/true
volumes:
- ../app:/var/www/app
nginx:
image: nginx
volumes_from:
- app
php:
image: php
volumes_from:
- app
在v3.2 volumes_from
现在是invalid option
。该文档仅用于使用新的顶级卷synthax,即all the ways better
。
我已经阅读了一些关于github的评论,并且人们提出的唯一解决方案是
version: '3.2'
services:
nginx:
image: nginx
volumes:
- app:/var/www/app
php:
image: php
volumes:
- app:/var/www/app
volumes:
app:
driver_opts:
type: none
device: ../app
o: bind
显然看起来更糟糕,它甚至对我不起作用。它给了我一个错误:no such file or directory
。那么我还应该尝试什么呢?我似乎仍然可以使用links
而不是顶级卷,但它被视为文档中的遗留选项。那么如何使用新语法做到这一点?
修改 问题已被确定为可能重复,但我不同意。请参阅我的评论以获得解释。
答案 0 :(得分:2)
正如主题启动者已经提到的那样,volumes_from
已从新的docker-compose
语法中移除,根据documentation支持在顶级键{{1中定义的命名卷}}。文档还说明了volumes和bind mounts之间的区别,其中一个是管理内容的人:
相比之下,当您使用卷时,会在主机上的Docker存储目录中创建一个新目录,Docker会管理该目录的内容。
如果是这种情况,那么将主机文件夹挂载到卷中并让它由主机的文件系统和Docker同时控制是没有意义的。
如果您仍想将相同的文件夹绑定到两个或更多容器中,您可以尝试以下方法:
volumes