对docker-compose.yml中的volumes_from和volume的使用感到困惑
我正在试图了解 – 也许我已经做了 – volumes_from
docker-compose.yml
文件中volumes_from
和volumes_from
用法之间的区别。 我已经阅读了文档,但从那里不是很清楚,所以我正在做一个真正的练习。
我有以下设置:
- 一个根目录
- 一个名为
php-apache
的Dockerfile
下有一个Dockerfile
- 一个名为
mongo
的目录,在根目录下有一个Dockerfile
- 根目录下
docker-compose.yml
文件
注意:如果你不清楚,看看这里 ,下面的所有东西都在那里(
mongodb-test
分支)
-
在
php-apache/Dockerfile
我有以下条目:VOLUME /data /data
-
在
mongo/Dockerfile
我有以下条目:VOLUME /data/db /data/configdb
-
在
docker-compose.yml
我有以下内容: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
这是我从这个设置了解到的:
- 图像
reynierpm/php55-dev
将暴露一个/data
目录,这将被映射到tianon/true
~data:/data
在tianon/true
图像 - 图像
reynierpm/mongodb
会将/data/db
暴露给外部,并在内部映射到/data/configdb
然后将/data/db
映射到tianon/true
映像中的~/data/mongo:/data/db
。
现在我的脑海里一片混乱,因为我想达到的是以下几点:
- 保持主机上的代码映射到容器(
<path_on_host>:/var/www
docker-compose.yml
上的这一行<path_on_host>:/var/www
) - 将数据保存在主机的本地目录中
所以,我正在做什么? 由于我还在学习,所以请随时在这个设置上做任何修改。
图像reynierpm / php55-dev将暴露一个/ data目录,这将被映射到〜data:/ data在天雄/真实图像
最好说它将映射到docker主机上的~/data
。 请注意,第二卷也会有一个/data/db
。
图像reynierpm / mongodb会将/ data / db暴露给外部,并在内部映射到/ data / configdb,然后将/ data / db映射到tianon / true映像中的〜/ data / mongo:/ data / db。
根据volume_data容器的容量,这个容器将与php-apache相同。
如果你的目标是:
如果你的代码在~/mni/
你没事的话。 你正在加载mongoDB数据库目录到php-apache容器,我不认为你需要这个。
您需要为您的容器连接或链接容器(传统)创builduser defined network
。 要创build用户定义的networking:
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>
请注意,您必须从您的web应用程序的名称调用您的mongo容器,在您的情况下mongodb
。