在 Dockerfile 中,我有一个安装 requirements.txt
的层:
FROM python:2.7
RUN pip install -r requirements.txt
当我构建 docker 映像时,它会运行整个过程, 而不管 对该文件所做的任何更改。
如果文件发生更改,如何确保 Docker 仅运行 pip install -r requirements.txt
?
Removing intermediate container f98c845d0f05
Step 3 : RUN pip install -r requirements.txt
---> Running in 8ceb63abaef6
Collecting https://github.com/tomchristie/django-rest-framework/archive/master.zip (from -r requirements.txt (line 30))
Downloading https://github.com/tomchristie/django-rest-framework/archive/master.zip
Collecting Django==1.8.7 (from -r requirements.txt (line 1))
原文由 Prometheus 发布,翻译遵循 CC BY-SA 4.0 许可协议
我假设在您的构建过程中的某个时刻,您正在使用
COPY
或ADD
将整个应用程序复制到 Docker 映像中:问题是每次将整个应用程序复制到映像中时,都会使 Docker 构建缓存无效。这也将使所有后续构建步骤的缓存无效。
为了防止这种情况,我建议在将整个应用程序添加到映像之前,在单独的构建步骤中 仅复制
requirements.txt
文件:由于需求文件本身可能很少更改,因此您将能够使用缓存层,直到您将应用程序代码添加到图像中。