带有层缓存的 Docker 构建时秘密

问题描述

我有一个 Dockerfile,它从 AWS 代码工件中执行一个包的 pip install。安装需要一个身份验证令牌,所以我目前的方法是在构建脚本中生成动态/秘密 repo url,并将其作为构建 arg 传递到 Docker,这会在我的 Dockerfile 中产生这样的行:

ARG CORE_REPO_URL
ARG CORE_VERSION
RUN pip install -i $CORE_REPO_URL mylib_core==$CORE_VERSION

RUN 命令中使用 ARG 会导致该层永远不会被缓存,因此即使库版本没有改变,这部分每次都会重新构建。

是否有更好的方法来执行此操作,以便除非 CORE_VERSION 更改,否则将使用图层缓存?

也许我应该在图像中安装 aws 工具链,以便可以在较早的步骤中在其中生成动态 repo url(每次都使用相同的命令,因此它不需要 ARG,并且希望缓存层)?这样做的一个缺点是必须将 AWS 凭证放入映像中。如果这是唯一的解决方案,我可能会涉及 docker secrets 来避免这种情况。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)