我在docker-compose文件中有一个特殊的用例。下面是此类文件的摘录,应该足以说明该问题。
version: '2'
volumes:
data:
#external: true
driver: rancher-nfs
services:
harbor-setupwrapper:
image: mreferre/harbor-setupwrapper:1.1.1-1
container_name: harbor-setupwrapper
volumes:
- data:/data
command: ["/harbor/harbor-setupwrapper.sh"]
network_mode: "none"
ui:
image: vmware/harbor-ui:v1.1.1
container_name: harbor-ui
restart: always
volumes:
- data:/harbor_storage
- /data/secretkey:/etc/ui/key:z
depends_on:
- harbor-setupwrapper
entrypoint:
- /bin/sh
- -c
command:
- /configui/entrypointui.sh基本上,我的用例如下:我创建了一个docker卷(data),并将其挂载到一个安装容器中(我正在使用一个常规的NFS驱动程序)。该设置容器在卷内生成一堆配置文件。
然后我需要将整个卷映射到另一个容器中:
- data:/harbor_storage
这工作得很好,在ui容器中,我可以看到容器/harbor_storage目录内的data卷的内容。
但是,我还需要在ui容器内的特定目录中映射data卷中的特定文件:
-/data/secretkey:/etc/ui/key:z
这不起作用,因为它基本上将主机本地的/data/secretkey目录映射到容器内的/etc/ui/key:z目录。
实际上,secretkey是data卷中的一个文件(这就是我想映射到文件/etc/ui/key:z的内容。
我还尝试了语法中的调整,看看我是否可以告诉compose我指的是data卷,但compose抱怨语法错误。这是我尝试过的(没有成功):
- data/secretkey:/etc/ui/key:z
任何想法都很感谢。
附注:我知道我可以调用一个小脚本,将/harbor_storage/secretkey复制到/etc/ui/key中,但我仍然希望不必陷入这种困境,并能够像我试图做的那样映射它。
发布于 2020-01-23 18:54:19
只是为了让新人知道。现在这是可能的(从docker的2.1.0.X版本,引擎19.x.x开始),方法与文件夹映射相同:
volumes:
- ~/dev/environment/configuration.properties:/opt/data/configuration.properties发布于 2017-05-22 23:37:40
目前无法装载卷的子目录。您必须从该卷提取密钥并挂载它,或者复制或符号链接它。
https://stackoverflow.com/questions/44116521
复制相似问题