docker-compose volumes_from等同于版本3

时间:2017-02-14 17:05:17

标签: docker docker-compose

我正在尝试使用docker compose创建Nginx / PHP FPM设置,并且遇到版本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 docker compose文件不再有volumes_from,这基本上就是我想要复制的内容。

如何才能将其与版本3配合使用?

1 个答案:

答案 0 :(得分:26)

使用“命名卷”在容器之间共享文件需要定义

1)yml文件顶层的volumes:部分,并定义卷名

volumes:
  php:

2)在第一个容器上定义volume部分,就像你所做的那样(共享将挂载)

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

3)在第二个容器上定义volume部分(Share将从中挂载)

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

4)(可选)如果您需要在主机上存储卷数据,可以使用local-persist docker插件。您可以指定docker volume driver和存储数据的路径。

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

并使用Local Persist Docker插件