Docker 运行 带有 Exec 形式的挂载秘密的指令
Docker RUN Instruction with a Mounted Secret in Exec Form
Dockerfile
中的 RUN
指令的正确语法是什么,它需要以 exec 形式安装秘密?
换句话说,如果 Dockerfile
看起来像:
FROM node:fermium-alpine
# . . .
RUN --mount=type=secret,id=npmrc yarn build:production
# . . .
上面的RUN
指令如何从shell形式转换为exec形式?官方文档中好像没有例子here.
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"]
# . . .
注:
--mount
标志保留在其右侧的 JSON 数组之外
dst=. . .
已添加到上面的 --mount
标志以确保 .npmrc
不仅保存为点文件,而且保存在 WORKDIR
以便 yarn
可以在 build
期间使用它
RUN
指令在 exec 形式的 --mount= . . .,dst=. . .
中可能会变得冗长;使用 \
在 Dockerfile
中拆分长行(取自 Dockerfile
最佳实践 here)
- 为了安全起见,由于shell形式在这里使用而不是,所以
yarn
可执行文件已替换为 node:fermium-alpine
图像 的绝对路径 /usr/local/bin/yarn
Dockerfile
中的 RUN
指令的正确语法是什么,它需要以 exec 形式安装秘密?
换句话说,如果 Dockerfile
看起来像:
FROM node:fermium-alpine
# . . .
RUN --mount=type=secret,id=npmrc yarn build:production
# . . .
上面的RUN
指令如何从shell形式转换为exec形式?官方文档中好像没有例子here.
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"]
# . . .
注:
--mount
标志保留在其右侧的 JSON 数组之外dst=. . .
已添加到上面的--mount
标志以确保.npmrc
不仅保存为点文件,而且保存在WORKDIR
以便yarn
可以在build
期间使用它
RUN
指令在 exec 形式的--mount= . . .,dst=. . .
中可能会变得冗长;使用\
在Dockerfile
中拆分长行(取自Dockerfile
最佳实践 here)- 为了安全起见,由于shell形式在这里使用而不是,所以
yarn
可执行文件已替换为node:fermium-alpine
图像 的绝对路径
/usr/local/bin/yarn