簡體   English   中英

如何在兩個容器之間正確共享相同的主機卷?

[英]How do I properly share the same host volume between the two containers?

由於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它以以下消息結尾:

錯誤:對於websocket_php_1無法為服務php創建容器:安裝帶有選項的卷時出錯:type ='none'device ='〜/ sources / websocket'o ='bind':無此類文件或目錄

如何在兩個容器之間正確共享相同的主機卷?

為什么不使用綁定安裝? 這只是每個人都需要查看的源代碼,對嗎? 我添加了: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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM