从YAML/Compose文件将主机目录挂载到停靠容器 [英] Mounting a host directory to a docker container from yaml/compose file

查看:52
本文介绍了从YAML/Compose文件将主机目录挂载到停靠容器的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的当前配置的一部分如下

mymicroservice:
  image: service_img
  networks: myoverlay
  volumes:
    - /Users/abcdUser/mountme:/opt/company/

这会在我部署停靠机群服务堆栈时将我的计算机的目录装载到/opt/company时执行此工作。

但是,我想在单独的volumes:下指定源目录,然后在那里指定该名称。我认为这是可能的,但我找不到语法。

所以我想要以下内容,但不能这样做:

mymicroservice:
  image: service_img
  networks: myoverlay
  volumes:
    - myownvolume:/opt/company/


volumes:
 - myownvolume: /Users/abcdUser/mountme
我想澄清一下,myownvolume这里只是指向目录/Users/abcdUser/mountme,我并不打算创建扩展坞卷。或者有没有其他更好的方法来做到这一点?

推荐答案

可以这样做,但不能使用标准设置。默认的音量驱动程序不允许您正在寻找的格式。您需要使用需要外部安装的坞站插件。考虑以下YAML

version: '2'

services:
  one:
    image: alpine
    working_dir: /one/
    command: sleep 600
    volumes:
      - data:/one/

  two:
    image: alpine
    working_dir: /two/
    command: sleep 600
    volumes:
      - data:/two/

volumes:
  data:
    driver: local-persist
    driver_opts:
      mountpoint: /data/local-persist/data
当您安装了本地持久化插件时,上述将会起作用。https://github.com/CWSpear/local-persist

您可以在

上找到有关其他插件的信息

https://docs.docker.com/engine/extend/legacy_plugins/#volume-plugins

另外,如果卷条目的重复对您有问题,则可以在YAML中使用锚点

version: '3'

services:
  alpines:
    image: alpine
    command: sleep 200
    volumes: &common_volumes
      - ./data:/data
      - ./config:/config
  alpine2:
    image: alpine
    command: sleep 200
    volumes: *common_volumes

$ docker-compose config
services:
  alpine2:
    command: sleep 200
    image: alpine
    volumes:
    - /home/vagrant/so/volumes2/data:/data:rw
    - /home/vagrant/so/volumes2/config:/config:rw
  alpines:
    command: sleep 200
    image: alpine
    volumes:
    - /home/vagrant/so/volumes2/data:/data:rw
    - /home/vagrant/so/volumes2/config:/config:rw
version: '3.0'

这篇关于从YAML/Compose文件将主机目录挂载到停靠容器的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆