由于当Docker Compose更改时,volumes_from
消失了,因此组成文件版本我在如何在不同容器之间共享卷方面有点迷失。
请参阅下面的示例,其中PHP应用程序位于PHP-FPM容器中,Nginx位于第二个容器中。
version: '3.3'
services:
php:
build:
context: ./docker/php7-fpm
args:
TIMEZONE: ${TIMEZONE}
env_file: .env
volumes:
- shared-volume:/var/www
nginx:
build: ./docker/nginx
ports:
- 81:80
depends_on:
- php
volumes:
- shared-volume:/var/www
volumes:
shared-volume:
driver_opts:
type: none
device: ~/sources/websocket
o: bind
为了使应用程序当然工作,Nginx必须以某种方式访问PHP文件,volumes_from
帮助我们很多。现在该选项已经消失。
当我尝试命令docker-compose up
时,它以以下消息结束:
错误:对于websocket_php_1无法为服务php创建容器: 使用选项装入音量时出错:type ='none' device ='〜/ sources / websocket'o ='bind':没有这样的文件或目录
如何在两个容器之间正确共享相同的主机卷?
答案 0 :(得分:1)
为什么不使用绑定挂载?这只是每个需要查看的源代码,对吗?我添加了:ro(只读)选项,假设没有发生代码生成。
services:
php:
build:
context: ./docker/php7-fpm
args:
TIMEZONE: ${TIMEZONE}
env_file: .env
volumes:
# User-relative path
- ~/sources/websocket:/var/www:ro
nginx:
build: ./docker/nginx
ports:
- 81:80
depends_on:
- php
volumes:
# User-relative path
- ~/sources/websocket:/var/www:ro