对 volumes_from 和 docker-compose.yml 中的卷使用感到困惑

Confused about volumes_from and volumes usage in docker-compose.yml

我正在尝试了解 - 也许我已经做过也许还没有 - volumes_fromvolumesdocker-compose.yml 文件中的用法之间的差异。我已经阅读了文档,但我不太清楚,所以我正在做一个真正的练习。

我有以下设置:

Note: If it's not clear to you, take a look here and everything exposed down below is right there as well (mongodb-test branch)

这是我从该设置中了解到的内容:

现在我脑子里一片混乱,因为我想要实现的是:

所以,我在做什么很好?由于我还在学习中,请随时在此设置上进行任何修改。

The image reynierpm/php55-dev will expose a /data directory and this will be mapped to ~data:/data in tianon/true image

最好说它将映射到 docker 主机上的 ~/data。请注意,第二卷也会有一个/data/db

The image reynierpm/mongodb will expose a /data/db to the outside and mapped to /data/configdb internally then the /data/db is mapped to ~/data/mongo:/data/db in tianon/true image.

此容器与 php-apache 的容量相同 volume_data 容器。

如果您的目标是:

如果您的代码在 ~/mni/ 中,则没有问题。您正在将 mongoDB 数据库目录安装到 php-apache 容器,我认为您不需要那个。

您需要为您的容器连接或 link 个容器(旧版)创建一个 user defined network。创建用户定义的网络:

docker network create  --driver bridge <yournetwork name>

您不需要 DOC。这就是为什么我删除了第三个容器。我还修复了不必要的卷映射。

已更新 Docker 文件:

version: '2'
services:
    php-apache:
        container_name: "php55-dev"
        image: reynierpm/php55-dev
        ports:
            - "80:80"
        environment:
            PHP_ERROR_REPORTING: 'E_ALL & ~E_DEPRECATED & ~E_NOTICE'
        volumes:
            - ~/mmi:/var/www
        volumes_from:
            - volumes_data
    mongo:
        container_name: "mongodb"
        image: reynierpm/mongodb
        ports:
            - "27017:27017"
        volumes_from:
            - volumes_data
    volumes_data:
        image: tianon/true
        volumes:
            - ~/data/mongo:/data/db
            - ~/data:/data
networks:
  default:
    external:
      name: <your network name>

请注意,您必须通过网络应用程序的名称调用 mongo 容器,在您的例子中是 mongodb