安装一个主机目录从YAML泊坞窗容器/编写文件
问题描述:
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
,我不打算创建一个泊坞窗卷。或者还有其他更好的方法来做到这一点?
答
可以这样做,但不能用标准设置。默认的音量驱动程序不允许使用您正在查找的格式。您需要使用需要外部安装的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'
答
这是不可能的。您必须使用绑定安装语法或卷语法。组合配置顶层的音量不允许混合两者。有关类似问题,请参见how to define a general mount point in docker compose。
使用锚,这是非常有帮助。长话短说,如果我想避免任何插件,我所做的是没有安装任何第三方插件的唯一途径? – curiousengineer
是的,那么你需要使用你用过的东西 –