Docker RUN ls shows cached files

2019-03-02 11:34发布

问题:

I am trying to setup a docker container and am using RUN ls to help debug. However, when I run RUN ls, docker prints out the following:

 ---> Using cache
 ---> 96223b1b0748

I am expecting it to log out files in the folder. Does anyone know what might be happening?

Here is my full Dockerfile:

FROM node:latest 

WORKDIR /app

COPY app .

RUN ls

Thanks in advance!

回答1:

Docker caches recently built layers so that subsequent builds can reuse them.

The simplest way to break this behavior is to use the --no-cache flag during build:

docker build --no-cache ...

However this will invalidate all cached layers. If you still want to use cached layers for layers before the RUN ls instruction, you can put the following line before it:

ARG CACHE_TS=default_ts

And then gives this argument a new value on every new build:

docker build --build-arg CACHE_TS=$(date +%s) ...

Please see this Github issue: https://github.com/moby/moby/issues/22832