m0o*_*ell 10 docker docker-compose docker-volume
使用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
Run Code Online (Sandbox Code Playgroud)
volumes_from现在是v3.2 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
Run Code Online (Sandbox Code Playgroud)
这显然看起来更糟,它甚至对我不起作用.它给了我一个错误:no such file or directory.那么我还应该尝试什么呢?看起来我仍然可以使用links而不是顶级卷,但它被认为是文档中的遗留选项.那么如何使用新语法做到这一点?
编辑: 问题已被确定为可能重复,但我不同意.请参阅我的评论以获得解释.
正如主题启动者已经提到的,根据支持在顶级 key 中定义的命名卷的文档volumes_from,已从新语法中删除了。该文档还说明了volumes和bind mounts之间的区别,其中之一是谁管理内容:docker-composevolumes
\n\n\n相比之下,当您使用卷时,会在主机上的 Docker\xe2\x80\x99s 存储目录中创建一个新目录,并且 Docker 管理该目录\xe2\x80\x99s 的内容。
\n
如果是这种情况,那么将主机文件夹绑定挂载到卷中并让它同时由主机的文件系统和 Docker 控制是没有意义的。
\n\n如果您仍然想将同一文件夹绑定安装到两个或多个容器中,您可以尝试以下操作:
\n\nversion: \'3.2\'\nservices:\n nginx:\n image: nginx\n volumes:\n - type: bind\n source: ../app\n target: /var/www/app\n php:\n image: php\n volumes:\n - type: bind\n source: ../app\n target: /var/www/app\nRun Code Online (Sandbox Code Playgroud)\n