我正在尝试将参数传递给docker build使其在Dockerfile中执行为

RUN --mount=type=secret,id=$SECRET_NAME cp /run/secrets/$SECRET_NAME /etc/app/conf
但这将在构建期间失败
 > [8/8] RUN --mount=type=secret,id=mysecret cp /run/secrets/mysecret /etc/app/conf:
#13 0.224 cp: cannot stat '/run/secrets/mysecret': No such file or directory
但是当我直接在RUN命令中使用它时
RUN --mount=type=secret,id=mysecret cp /run/secrets/mysecret /etc/app/conf
那可行。
有什么想法吗?

最佳答案

似乎您建议的功能(“ secret 标识符本身的环境变量扩展”)仅受BuildKit支持,请参见。以下两个引用:

  • https://github.com/moby/buildkit/blob/master/frontend/dockerfile/docs/experimental.md#run---mounttypesecret
  • https://docs.docker.com/develop/develop-images/build_enhancements/#new-docker-build-secret-information

  • 因此,也许您可​​以重构您的Dockerfile,使其不需要此功能(顺便说一句,鉴于仅仅通过查看唯一的RUN --mount=…命令就无法知道 secret 标识符,这将不利于提高可读性/可重复性。)

    关于docker - 带有传递参数的Dockerfile RUN命令,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/64686009/

    10-16 23:42