我有一个 Dockerfile,它pip install
从 AWS 代码工件中执行一个包。安装需要一个身份验证令牌,所以我目前的方法是在构建脚本中生成动态/秘密 repo url,并将其作为构建 arg 传递给 Docker,这会在我的 Dockerfile 中导致这样的行:
ARG CORE_REPO_URL
ARG CORE_VERSION
RUN pip install -i $CORE_REPO_URL mylib_core==$CORE_VERSION
在命令中使用 ARGRUN
会导致该层永远不会被缓存,因此即使库版本没有更改,这部分也会每次都重新构建。
有没有更好的方法来做到这一点,以便除非CORE_VERSION
更改,否则将使用层缓存?
也许我应该aws
在图像中安装工具链,以便可以在较早的步骤中在其中生成动态 repo url(每次都使用相同的命令,因此它不需要 ARG 并希望缓存图层)?这样做的一个缺点是必须将 AWS 凭证放入映像中。docker secrets
如果这是唯一的解决方案,我也许可以避免这种情况。