我正在尝试将
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
我做错了什么?
没有充分解释的问题是秘密范围在运行命令内开始和结束。因此,为了使它们成为永久配置,您需要将它们保存为临时文件并将它们复制到您的目的地:
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>
随意添加更清晰的语法。