在Docker文件中,我有一个安装require.txt的图层:
FROM python:2.7
RUN pip install -r requirements.txt
无论对该文件进行任何更改,当我构建码头服务器映像时都会运行整个过程.
如果文件有更改,我该如何确保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))
我假设在构建过程的某个时刻,您将使用COPY或ADD将整个应用程序复制到Docker映像中:
COPY . /opt/app
WORKDIR /opt/app
RUN pip install -r requirements.txt
问题在于,您每次将整个应用程序复制到映像中时,无效Docker构建缓存.这也将使所有后续构建步骤的缓存无效.
为了防止这种情况,我建议在将整个应用程序添加到映像之前,单独构建步骤中只复制require.txt文件:
COPY requirements.txt /opt/app/requirements.txt
WORKDIR /opt/app
RUN pip install -r requirements.txt
COPY . /opt/app
# continue as before...
由于需求文件本身可能很少更改,您可以使用缓存的图层,直到将应用程序代码添加到图像中为止.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。