Docker 秘密文件未挂载

问题描述 投票:0回答:1

我正在尝试将

config.toml
credentials.toml
${HOME}/.cargo
目录安装到 docker 文件中的目标目录。由于某种原因,这些文件从未安装。

命令:

docker build --secret id=config,src=${HOME}/.cargo/config.toml --secret id=credentials,src=${HOME}/.cargo/credentials.toml ./ -t andynopol/babylon-registry-manager --no-cache --progress=plain

Dockerfile挂载命令:

RUN --mount=type=secret,id=config,target=/usr/local/cargo/config.toml \
    --mount=type=secret,id=credentials,target=/usr/local/cargo/credentials.toml

RUN ls -la /usr/local/cargo/

输出:

#14 [builder  5/11] RUN ls -la /usr/local/cargo/
#14 0.079 total 20
#14 0.079 drwxrwxrwx 1 root root 4096 Oct 30 20:58 .
#14 0.079 drwxr-xr-x 1 root root 4096 Oct 19 20:03 ..
#14 0.079 drwxrwxrwx 2 root root 4096 Oct 19 20:03 bin
#14 0.079 -rw-rw-rw- 1 root root  308 Oct 19 20:03 env
#14 DONE 0.1s

我使用的是docker 27.2.0

我做错了什么?

docker
1个回答
0
投票

没有充分解释的问题是秘密范围在运行命令内开始和结束。因此,为了使它们成为永久配置,您需要将它们保存为临时文件并将它们复制到您的目的地:


RUN --mount=type=secret,id=config,target=<DISK_CONFIG> \
    --mount=type=secret,id=credentials,target=<DISC_CREDENTIALS> \
    cp <TEMP_CONFIG> <PERMANENT_CONFIG_LOCATION> && cp <TEMP_CREDENTIALS> <PERMANENT_CREDENTIALS_LOCATION>

随意添加更清晰的语法。

© www.soinside.com 2019 - 2024. All rights reserved.