2017-02-14 130 views
14

我試圖創建的Nginx/PHP FPM設置與碼頭工人撰寫時遇到與版本3卷語法/變化的問題。搬運工,撰寫volumes_from相當於用3版

Dockerfile

FROM php:7-fpm 
VOLUME /var/www/html 

docker-compose.yml

version: "3" 
services: 
    php: 
    build: . 
    volumes: 
     - ./html:/var/www/html 
    web: 
    image: nginx 
    links: 
     - php 
    ports: 
     - "8888:80" 
    volumes: 
     - php:/var/www/html 
     - ./default.conf:/etc/nginx/conf.d/default.conf 
volumes: 
    php: 

當我添加一個index.php文件到./html,我可以查看通過轉到http://localhost:8888,但任何靜態文件(如CSS)返回404,因爲Nginx的無法找到那些在其容器(/var/www/html是nginx的容器是空的)。隨着第3版搬運工組成文件沒有volumes_from了,這基本上就是我試圖複製。

我怎樣才能得到這3個版本的工作?

回答

10

對於使用「命名卷」爲容器之間共享文件,你需要定義陽明文件的頂層

1)volumes:部分和定義卷名

volumes: 
    php: 

2)定義volume節在第一容器像你這樣(其中的份額將安裝)

web: 
    volumes: 
     - php:/var/www/html #<container_name>:<mount_point> 

3)定義的第二次聯合volume節ntainer(份額將從貼裝)

php: 
    volumes: 
    - php:/var/www/html 

4)(可選)如果你需要數據量存儲在主機上,你可以使用local-persist泊塢窗插件。您可以指定泊塢窗卷驅動程序和數據存儲位置的路徑。

volumes: 
    php: 
    driver: local-persist 
    driver_opts: 
     mountpoint: /path/on/host/machine/ 

在你的情況您忘記了php容器中定義的卷名。只需更換

php: 
    build: . 
    volumes: 
     - ./html:/var/www/html 

php: 
    build: . 
    volumes: 
     - php:/var/www/html 

,並使用當地堅持泊塢窗插件

+0

怎樣的'的.html /'文件被加載到'在/ var/WWW/html'與此設置? – Rob

+0

對不起,我錯過了你需要體積的外部安裝。您可以使用[本地持續(https://github.com/CWSpear/local-persist)泊塢窗插件達到同樣的results.I將更新的答案。 –

+0

那麼,如果要將本地文件夾安裝到容器中,命名卷的好處是什麼?或者換句話說:這個評估是否「在v3中沒有真正的等同於volume_from」?由於V2我可以使用volumes_from作爲一束坐騎的包裝,所以我定義一次架,然後「包括」關於通過'volumes_from'其他服務一樣的坐騎。如果我正確理解你的答案,在V3中,我將不得不分別在每個服務上定義每個安裝,對吧? – delf