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

前端之家收集整理的这篇文章主要介绍了docker-compose v3:使用顶级卷语法在多个容器之间共享装入装入的卷前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

使用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支持在顶级密钥卷中定义的命名卷.文档还说明了volumesbind 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
原文链接:https://www.f2er.com/docker/436532.html

猜你在找的Docker相关文章