Docker仅在发生更改时如何运行pip requirements.txt?
在Dockerfile中,我有一个要安装的层requirements.txt
:
FROM python:2.7RUN pip install -r requirements.txt
当我构建Docker映像时, 对该文件进行任何更改,它都会运行整个过程。
如何确保仅pip install -r requirements.txt
在文件发生更改的情况下运行Docker ?
Removing intermediate container f98c845d0f05Step 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))
回答:
我假设在构建过程中的某个时候,您正在使用COPY
或将整个应用程序复制到Docker映像中ADD
:
COPY . /opt/appWORKDIR /opt/app
RUN pip install -r requirements.txt
问题在于,每次将整个应用程序复制到映像时,您都会使Docker构建缓存无效。这还将使所有后续构建步骤的缓存无效。
为防止这种情况,建议在将整个应用程序添加到映像之前,在单独的构建步骤中 复制文件:
COPY requirements.txt /opt/app/requirements.txtWORKDIR /opt/app
RUN pip install -r requirements.txt
COPY . /opt/app
# continue as before...
由于需求文件本身可能很少变化,因此您可以使用缓存的层,直到将应用程序代码添加到映像中为止。
以上是 Docker仅在发生更改时如何运行pip requirements.txt? 的全部内容, 来源链接: utcz.com/qa/422260.html