加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

docker-compose v3:使用顶级卷语法在多个容器之间共享装入装入

发布时间:2020-12-16 03:34:25 所属栏目:安全 来源:网络整理
导读:使用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现在是无

使用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现在是无效选项.该文档仅用于使用新的顶级卷synthax,这是更好的方法.
我已经阅读了一些关于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

这显然看起来更糟,它甚至对我不起作用.它给了我一个错误:没有这样的文件或目录.那么我还应该尝试什么呢?看起来我仍然可以使用链接而不是顶级卷,但它被认为是文档中的遗留选项.那么如何使用新语法做到这一点?

编辑:
问题已被确定为可能重复,但我不同意.请参阅我的评论以获得解释.

最佳答案
正如主题启动者已经提到的那样,volume_from已从新的docker-compose语法中删除,根据documentation支持在顶级密钥卷中定义的命名卷.文档还说明了volumes和bind mounts之间的区别,其中一个是管理内容的人:

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读