【问题标题】:docker-compose volumes_from equivalent with version 3docker-compose volumes_from 等效于版本 3
【发布时间】:2017-02-14 17:05:16
【问题描述】:

我正在尝试使用 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 一起使用?

【问题讨论】:

    标签: docker docker-compose


    【解决方案1】:

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

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

    volumes:
      php:
    

    2) 像您一样在第一个容器上定义 volume 部分(共享将安装在哪里)

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

    3) 在第二个容器上定义 volume 部分(共享将从装载)

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

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

    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 插件

    【讨论】:

    • 如何通过此设置将.html/ 文件加载到/var/www/html 中?
    • 如果你想将本地文件夹挂载到容器中,命名卷有什么好处呢?或者换句话说:这个 eval 是否与“v3 中的volumes_from 没有真正的等价物”?因为在 v2 中,我可以使用 volumes_from 作为一堆挂载的包装器,所以我定义了一次挂载,然后通过 volumes_from 在其他服务上的相同挂载上“包含”。如果我正确理解您的答案,在 v3 中我将不得不在每个服务上分别定义每个挂载,对吗?
    • 请注意,您必须为其提供完整路径local-persist 才能正常工作。它不挂载相对路径。
    • 请注意,如果容器映像中位于 /var/www/html 的文件仅用于初始化,则此方法有效。卷创建后,php 容器的较新镜像将不会对其进行更新。
    • 首先将这个“空”卷放在顶部对我来说似乎违反直觉,但它确实有效。我可以替换“volumes_from”声明并升级到 docker-compose 3.5 版。谢谢! :)
    猜你喜欢
    • 2018-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-08
    • 2016-05-26
    • 1970-01-01
    相关资源
    最近更新 更多