我在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
容器中,我可以看到容器data
目录中/harbor_storage
卷的内容。
但是,我还需要在data
容器内的特定目录内的ui
卷中映射特定文件:
-/data/secretkey:/etc/ui/key:z
这不起作用,因为它基本上将主机本地的/data/secretkey
目录映射到容器内的/etc/ui/key:z
目录。
实际上secretkey
是data
卷中的文件(我想将其映射到文件/etc/ui/key:z
。
我也试过语法中的调整,看看我是否可以告诉撰写我指的是data
卷但是抱怨语法错误。这就是我尝试过的(没有运气):
- data/secretkey:/etc/ui/key:z
任何想法都赞赏。
P.S。我知道我可以调用一个将/harbor_storage/secretkey
复制到/etc/ui/key
的小脚本,但我仍然希望不必去那个rathole,并能像我想要的那样映射它。
答案 0 :(得分:2)
只是为了让新人们知道。 现在有可能(因为Docker 2.1.0.X版本是19.x.x引擎),并且方式与文件夹映射相同:
volumes:
- ~/dev/environment/configuration.properties:/opt/data/configuration.properties
答案 1 :(得分:1)
目前无法安装卷的子目录。您必须从该卷中提取该密钥并将其挂载,或者复制或符号链接。