我当前配置的一部分就像这样
mymicroservice:
image: service_img
networks: myoverlay
volumes:
- /Users/abcdUser/mountme:/opt/company/
当我部署docker swarm服务堆栈时,我的机器目录被挂载到/opt/company
,这就完成了这项工作。
但是,我想在单独的volumes:
下指定源目录,然后在那里指定该名称。我认为这是可能的,但我无法找到语法。
所以我想要以下几行但不能这样做:
mymicroservice:
image: service_img
networks: myoverlay
volumes:
- myownvolume:/opt/company/
volumes:
- myownvolume: /Users/abcdUser/mountme
我想澄清一点myownvolume
这里只是指向目录/Users/abcdUser/mountme
,我不打算创建一个docker卷。或者还有其他更好的方法吗?
答案 0 :(得分:2)
可以这样做,但不能使用标准设置。默认音量驱动程序不允许您正在寻找的格式。您需要使用需要外部安装的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
您可以在
上找到其他可用的插件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'
答案 1 :(得分:1)
那是不可能的。您必须使用bind mount语法或volume语法。在compose配置顶级的卷不会允许你混合两者。有关类似问题,请参阅how to define a general mount point in docker compose。