2017-06-29 47 views
4

随着泊坞窗,撰写synthax的V2,我们能够做这样的事:搬运工,撰写V3:分享与顶层卷语法多个容器之间的绑定安装卷

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

[如何更换卷\ _from在码头工人作曲家V3(HTTPS的可能重复: /////////42244079/how-to-replace-volumes-from-in-docker-composer-v3) – panK

+1

@panK我在问当地的docker方式做我能用v2实现的事情synthax。如果需要第三方插件来实现相同的效果,那么答案可能是:这是不可能的。但我不确定是否真的是这样,因为从我在github回购中看到的情况来看,建议的插件没有得到积极维护,并且不是很受欢迎。同时,这是相当常见的用例。所以我假设这个问题的作者正在寻找任何可能的选择,并且我正在寻找原生的“官方”码头方式。 – m0onspell

+0

我将其标记为可能的副本,因为当天我经历了许多与'volumes_from'相关的帖子,我相信每个人都在寻找原生的,官方的和可靠的解决方案。我找不到任何正式的,因为看起来他们只是放弃了这样的想法。这是我使用v2语法的唯一原因。 – panK

回答

0

为话题首发已经提到,volumes_from已从新docker-compose语法去掉,按照有利于在顶层关键volumes定义的命名卷documentation。该文档还指出volumes和之间的差别,其中之一是谁管理的内容:

By contrast, when you use a volume, a new directory is created within Docker’s storage directory on the host machine, and Docker manages that directory’s contents.

如果是这样的话,那么就没有任何意义绑定安装一个主机文件夹成册,让它由主机的文件系统和Docker同时控制。

如果您仍想结合安装在同一文件夹成两个或多个容器,你可以尝试像:

version: '3.2' 
services: 
    nginx: 
    image: nginx 
    volumes: 
     - type: bind 
     source: ../app 
     target: /var/www/app 
    php: 
    image: php 
    volumes: 
     - type: bind 
     source: ../app 
     target: /var/www/app 
+1

该问题包含单词“共享”,而不是重复。在旧版本中可以共享。重复总是一个不好的做法。 – m0onspell

+0

对于编程语言重复是一个不好的做法,我同意。这是一个明确的配置文件,可以帮助消除任何歧义。顺便说一下,如果你已经用docker inspect将我的解决方案与2.0语法进行了比较,你会发现在这个引擎盖下,两个版本几乎完全相同,并且你会看到相同的安装是“共享”容器。 –