2017-02-14 129 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