【问题标题】:How to replace volumes_from in docker-composer v3如何在 docker-compose v3 中替换volumes_from
【发布时间】:2017-02-15 08:25:10
【问题描述】:

我想知道下面的配置以适应 docker-composer.yml 的版本 3! volumes_from 不再有效,所以我应该跳过数据卷并将其替换为顶级卷吗?

version: '2'
services:

  php:
    build: ./docker-files/php-fpm/.
    volumes_from:
      - data
    working_dir: /code
    links:
      - mysql

  nginx:
    image: nginx:latest
    ports:
      - "80:80"
    volumes:
      - ./nginx/default.conf:/etc/nginx/conf.d/default.conf
    volumes_from:
      - data
    links:
      - php

  data:
    image: tianon/true
    volumes:
      - .:/code

【问题讨论】:

    标签: docker docker-compose


    【解决方案1】:

    默认情况下,命名卷允许您在容器之间共享数据。但是重启容器后将数据存储在主机上的同一位置会有些麻烦。但是我们可以使用local-persist docker 插件来修复它。

    要迁移到第 3 版,您需要

    1) 安装local-persist docker 插件(如果您想将卷数据存储到主机上的特定位置

    2) 修改docker-compose.yml

    version: '3'
    services:
    
      php:
        build: ./docker-files/php-fpm/.
        volumes:
          - data:/code
        working_dir: /code
        links:
          - mysql
    
      nginx:
        image: nginx:latest
        ports:
          - "80:80"
        volumes:
          - ./nginx/default.conf:/etc/nginx/conf.d/default.conf
        volumes:
          - data:/code
        links:
          - php
    
      data:
        image: tianon/true
        volumes:
          - data:/code
    
    # If you use local persist plugin
    volumes:
      data:
        driver: local-persist
        driver_opts:
          mountpoint: /path/on/host/machine/
    
    # Or If you dont want using local persist plugin
    volumes:
      data:
    

    您还可以使用此卷部分将卷数据存储到主机:

    volumes:
      data:
        external: true #< it means store my data to the host machine
    

    但是你不能在主机上指定这个卷的路径

    【讨论】:

    • 好的,但是数据:服务已经没有功能了?直接共享主机卷有什么缺点吗?喜欢volumes: .:/code
    • 只有这个容器自己封装了数据,才需要数据容器。在这种情况下,您可以简单地备份这些数据,将容器(带有数据)移动到另一台主机。这是data only container pattern。但是如果你想使用另一种方法:将数据存储在主机上,那么数据容器是不必要的
    • 当您想与其他用户共享您的设置时,为基本功能(例如我们在主机上具有特定挂载点)安装第三方插件是不可接受的。我对 docker devs 将基本功能留在 docker-compose 版本 3 之外感到非常失望
    • depends_on可以代替links
    • 我不确定这是否真的回答了这个问题。而且您的评论仍然没有解决对仅数据容器的担忧。在此配置中,服务data: ... 将永远不会被使用。 (截至 2018 年 5 月)
    猜你喜欢
    • 2018-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-16
    • 2021-08-27
    • 1970-01-01
    相关资源
    最近更新 更多