问题描述
ROWID
中的 RUN
指令需要以 exec 形式安装秘密的正确语法是什么?
换句话说,如果 Dockerfile
看起来像:
Dockerfile
如何将上面的FROM node:fermium-alpine
# . . .
RUN --mount=type=secret,id=npmrc yarn build:production
# . . .
指令从shell 形式转换为exec 形式?官方文档 here 中似乎没有示例。
解决方法
RUN
注意:
-
FROM node:fermium-alpine WORKDIR /usr/src/app # . . . RUN --mount=type=secret,id=npmrc,dst=/usr/src/app/.npmrc ["/usr/local/bin/yarn",\ "build:production"] # . . .
标志位于右侧的 JSON 数组之外 -
--mount
已添加到上面的dst=. . .
标志以确保--mount
不仅保存为点文件,而且保存在.npmrc
中,因此WORKDIR
可以在yarn
期间使用它
带有 exec 形式的 -
RUN
指令可能会很长;使用--mount= . . .,dst=. . .
在\
中拆分长行(取自Dockerfile
最佳实践 here) - 为了安全起见,由于 shell 表单在此处未被使用,
Dockerfile
可执行文件被替换为绝对路径 {{1 }} 用于yarn
图像
build
的