我RUN在Dockerfile中有一些命令,我想在-no-cache每次构建Docker镜像时运行它.
我理解docker build --no-cache将禁用整个Dockerfile的缓存.
是否可以为特定的RUN命令禁用缓存?
我有一个Docker文件试图将Django代码部署到容器中
FROM ubuntu:latest
MAINTAINER { myname }
#RUN echo "deb http://archive.ubuntu.com/ubuntu/ $(lsb_release -sc) main universe" >> /etc/apt/sou$
RUN apt-get update
RUN DEBIAN_FRONTEND=noninteractive apt-get install -y tar git curl dialog wget net-tools nano buil$
RUN DEBIAN_FRONTEND=noninteractive apt-get install -y python python-dev python-distribute python-p$
RUN mkdir /opt/app
WORKDIR /opt/app
#Pull Code
RUN git clone git@bitbucket.org/{user}/{repo}
RUN pip install -r website/requirements.txt
#EXPOSE = ["8000"]
CMD python website/manage.py runserver 0.0.0.0:8000
然后我构建我的代码docker build -t dockerhubaccount/demo:v1 .,这将我的代码从Bitbucket拉到容器.我运行它docker run -p 8000:8080 -td felixcheruiyot/demo:v1,事情似乎工作正常. …
我有一个 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
我使用带有目标的 makefile 来构建映像。首先,我从 docker hub 中提取上一个镜像:
docker pull $(REGISTRY)/$(DOCKER_IMAGE)
然后我使用这个拉取的图像作为新构建的缓存:
docker build --cache-from $(DOCKER_IMAGE) -t $(DOCKER_IMAGE) 
然后新镜像被推送到 Docker hub。我正在 CI 环境 (Gitlab) 中构建图像。如果我检查日志,即使 Git 存储库中没有进行任何更新,ADD 步骤也总是会使缓存无效(并且校验和会更改)。
我已经检查了“ https://api.github.com/repos/dwjbosman/micropython/git/refs/heads/master ”的输出。内容似乎没有变化。
是否有一些隐藏的属性(也许是时间?)仍然在变化?