dwj*_*man 5 git docker gitlab-ci dockerfile
我有一个 docker Dockerfile,我想在其中克隆 Git 存储库。如果 Git 存储库没有更新,我希望 Docker 使用它的缓存。如果存储库已更新,则构建 Docker 映像应使用 Git 存储库更新。
基于这个 stackoverflow 问题:
我已将以下内容添加到我的 Dockerfile 中:
#invalidate cache if micropython is updated
ADD https://api.github.com/repos/dwjbosman/micropython/git/refs/heads/master /root/micropython_version.json
RUN git clone --recurse-submodules https://github.com/dwjbosman/micropython.git /root/micropython && \
cd /root/micropython && \
git submodule update
Run Code Online (Sandbox Code Playgroud)
我使用带有目标的 makefile 来构建映像。首先,我从 docker hub 中提取上一个镜像:
docker pull $(REGISTRY)/$(DOCKER_IMAGE)
Run Code Online (Sandbox Code Playgroud)
然后我使用这个拉取的图像作为新构建的缓存:
docker build --cache-from $(DOCKER_IMAGE) -t $(DOCKER_IMAGE)
Run Code Online (Sandbox Code Playgroud)
然后新镜像被推送到 Docker hub。我正在 CI 环境 (Gitlab) 中构建图像。如果我检查日志,即使 Git 存储库中没有进行任何更新,ADD 步骤也总是会使缓存无效(并且校验和会更改)。
我已经检查了“ https://api.github.com/repos/dwjbosman/micropython/git/refs/heads/master ”的输出。内容似乎没有变化。
是否有一些隐藏的属性(也许是时间?)仍然在变化?
| 归档时间: |
|
| 查看次数: |
1283 次 |
| 最近记录: |