如何正确共享两个容器之间的相同主机卷?

因为当Docker Compose改变了它的组成文件版本时, volumes_from消失了,我在如何在不同的容器之间共享一个卷时感到有点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无法创build容器的服务php:错误,同时挂载卷选项:type ='none'device ='〜/ sources / websocket'o ='绑定':没有这样的文件或目录

如何正确共享两个容器之间的相同主机卷?

为什么你不使用绑定挂载? 这只是每个需要看到的源代码,正确的? 我添加了: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