将主机目录从yaml / compose文件挂载到docker容器

我有我这样的当前configuration的一部分

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

当我部署Docker群集服务堆栈时,我的机器目录被安装到/opt/company

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

所以我想要下面的一些东西,但不能这样做:

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

我想澄清一下, myownvolume这里只是指向/Users/abcdUser/mountme ,我不打算创build一个/Users/abcdUser/mountme卷。 或者还有其他更好的方法来做到这一点?

这是可能的,但不能用标准的设置。 默认的音量驱动程序不允许您正在查找的格式。 您需要使用需要外部安装的docker插件。 考虑下面的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 

如果安装了local-persist插件,以上方法可以工作。 https://github.com/CWSpear/local-persist

你可以find关于其他插件可用

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' 

这是不可能的。 您必须使用绑定安装语法或卷语法。 组合configuration顶层的音量不允许混合两者。 看看如何在Docker中定义一个通用挂载点来撰写类似的问题。