2017-10-10 45 views
0

由于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

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

回答

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 
相关问题