2017-10-10 83 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 
相關問題