如何防止每次我修改代码时重新运行pip安装的Docker

我有一个下面的Dockerfile的刮板:

 # Adapted from trcook/docker-scrapy FROM python:alpine RUN apk --update add libxml2-dev libxslt-dev libffi-dev gcc musl-dev libgcc openssl-dev COPY . /scraper RUN pip install -r /scraper/requirements.txt WORKDIR /scraper/apkmirror_scraper CMD ["scrapy", "crawl", "apkmirror"] 

scraper的代码位于/scraper/apkmirror_scraper ,以及scraper/requirements.txt 。 我注意到,每次修改代码并构build映像时,都会重新运行pip install -r requirements.txt而不是使用本地caching。

我怎样才能防止这个,并使其使用本地caching?

(关于这一点的一个理论是,虽然/scraper /scraper/requirements.txt本身没有改变, /scraper目录有,这使得RUN指令必须'重新运行';在这种情况下,它可能有助于移动requirements.txt到不同的目录,但是我无法从https://docs.docker.com/engine/reference/builder/#runvalidation这个“理论”是否正确)。

这个问题, Docker如何才能运行pip requirements.txt? ,似乎与我的情况有关。 每次修改代码,我都会使Docker构buildcaching失效,即使requirements.txt不变。 因此,为了避免每次都要重新运行pip install ,build议在一个单独的步骤中COPY requirements.txtRUN pip install -r requirements.txt