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

时间:2021-07-21 12:39:37

标签: python amazon-web-services docker aws-codeartifact

我有一个 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 来避免这种情况。

0 个答案:

没有答案
相关问题