Py学习  »  docker

Docker Build在使用--cache from复制gemfile时不使用缓存

ZedTuX • 5 年前 • 2034 次点击  

在我的本地机器上,我已经建立了 latest 映像,并运行另一个 docker build 应该在任何地方使用缓存。

然后我将图像作为 最新的 ,然后在我的ci服务器上, 最新的 要将我的应用程序用作生成缓存以生成新版本的图像:

docker pull $CONTAINER_IMAGE:latest

docker build --cache-from $CONTAINER_IMAGE:latest \
             --tag $CONTAINER_IMAGE:$CI_COMMIT_SHORT_SHA \
             .

从构建输出中我们可以看到 COPY Gemfile 不使用来自 最新的 图像,而我还没有更新该文件:

Step 15/22 : RUN gem install bundler -v 1.17.3 &&     ln -s /usr/local/lib/ruby/gems/2.2.0/gems/bundler-1.16.0 /usr/local/lib/ruby/gems/2.2.0/gems/bundler-1.16.1
 ---> Using cache
 ---> 47a9ad7747c6
Step 16/22 : ENV BUNDLE_GEMFILE=$APP_HOME/Gemfile     BUNDLE_JOBS=8
 ---> Using cache
 ---> 1124ad337b98
Step 17/22 : WORKDIR $APP_HOME
 ---> Using cache
 ---> 9cd742111641
Step 18/22 : COPY Gemfile $APP_HOME/
 ---> f7ff0ee82ba2
Step 19/22 : COPY Gemfile.lock $APP_HOME/
 ---> c963b4c4617f
Step 20/22 : RUN bundle install
 ---> Running in 3d2cdf999972

旁侧节点 :它在我的本地机器上运行良好。

查看Docker文档 Leverage build cache 似乎无法解释这里的行为,因为dockerfile和gemfile都没有改变,所以应该使用缓存。

是什么使Docker不使用GemFile的缓存?

更新

我试图复制设置正确权限的文件,使用 COPY --chown=user:group source dest 但它仍然不使用缓存。

开放的Docker论坛主题: https://forums.docker.com/t/docker-build-not-using-cache-when-copying-gemfile-while-using-cache-from/69186

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/44057
 
2034 次点击  
文章 [ 2 ]  |  最新文章 5 年前