如何正确共享两个容器之间的相同主机卷?
问题描述:
由于volumes_from
在Docker Compose更改为组合文件版本时消失我在如何共享不同容器之间的卷时有点遗失。如何正确共享两个容器之间的相同主机卷?
请参阅下面的示例,其中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
:
ERROR: for websocket_php_1 Cannot create container for service php: error while mounting volume with options: type='none' device='~/sources/websocket' o='bind': no such file or directory
如何正确共享两个容器之间的相同主机卷?
答
为什么你不使用绑定挂载?这只是每个需要查看的源代码,对吗?我添加了: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