如何在docker-composer v3中替换volumes_from

pro*_*eus 21 docker docker-compose

我想知道以下配置的等价物,以适应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
Run Code Online (Sandbox Code Playgroud)

Buk*_*gey 11

默认情况下,命名卷允许您在容器之间共享数据.但是在重新启动容器后将数据存储在主机上的相同位置会有一些麻烦.但我们可以使用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:
Run Code Online (Sandbox Code Playgroud)

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

volumes:
  data:
    external: true #< it means store my data to the host machine
Run Code Online (Sandbox Code Playgroud)

但是您无法在主机上指定此卷的路径

  • 当您想要与其他用户共享您的设置时,安装第三方插件以实现基本功能(例如我们在主机上具有特定的挂载点)是不可接受的.我很失望docker devs在docker-compose版本3之外留下了这个基本功能 (15认同)