tot*_*ack 3 python amazon-web-services docker aws-codeartifact
我有一个 Dockerfile,它执行pip install
AWS 代码工件中的一个包。安装需要身份验证令牌,因此我当前的方法是在构建脚本中生成动态/秘密存储库 URL,并将其作为构建参数传递到 Docker,这会导致我的 Dockerfile 中出现如下行:
ARG CORE_REPO_URL
ARG CORE_VERSION
RUN pip install -i $CORE_REPO_URL mylib_core==$CORE_VERSION
Run Code Online (Sandbox Code Playgroud)
在命令中使用 ARG 会RUN
导致该层永远不会被缓存,因此即使库版本没有更改,该部分每次都会重建。
有没有更好的方法来做到这一点,以便在不更改的情况下使用层缓存CORE_VERSION
?
也许我应该aws
在图像中安装工具链,以便可以在前面的步骤中生成动态存储库 URL(每次使用相同的命令,这样就不需要 ARG 并且希望缓存该层)?这样做的一个缺点是必须将 AWS 凭证放入映像中。docker secrets
如果这是唯一的解决方案,我也许可以避免这种情况。
我们已经成功使用 docker/buildkit 秘密解决了私有 npm 模块的这个问题:
RUN --mount=type=secret,id=npmrc,dst=/root/.npmrc npm install --ignore-scripts --no-audit
Run Code Online (Sandbox Code Playgroud)
当我们运行 docker build 命令时:
docker buildx build --secret id=npmrc,src=$HOME/.npmrc .
Run Code Online (Sandbox Code Playgroud)
采用这种方法时,即使令牌发生变化,缓存也不会失效。
归档时间: |
|
查看次数: |
1861 次 |
最近记录: |