相关疑难解决方法(0)

Docker如何运行pip requirements.txt只有在有变化的情况下?

在Dockerfile中我有一个安装层requirements.txt:

FROM python:2.7
RUN pip install -r requirements.txt
Run Code Online (Sandbox Code Playgroud)

当我构建docker镜像时,无论对此文件所做的任何更改,它都会运行整个过程.

如何pip install -r requirements.txt在文件发生更改时确保仅运行Docker ?

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))
Run Code Online (Sandbox Code Playgroud)

python docker dockerfile

64
推荐指数
2
解决办法
5万
查看次数

如何防止缓存Dockerfile指令?

在我Dockerfile使用curlADD下载最新版本的存档,如:

FROM debian:jessie
...
RUN apt-get install -y curl
...
RUN curl -sL http://example.com/latest/archive.tar.gz --output archive.tar.gz
...
ADD http://example.com/latest/archive2.tar.gz
...
Run Code Online (Sandbox Code Playgroud)

RUN使用curlADD创建自己的图像层的语句.这将用作未来执行的缓存docker build.

问题:如何禁用该指令的缓存?

在那里工作缓存失效之类的东西会很棒.例如,通过使用HTTP ETag或通过查询最后修改的头字段.这样就可以根据HTTP标头进行快速检查,以确定是否可以使用缓存层.

我知道一些肮脏的技巧可以帮助例如在RUN语句中执行下载shell脚本.它的文件名将在docker build我们的构建系统触发之前更改.我可以在该脚本中进行HTTP检查.但后来我需要将最后使用过的ETag最后修改过的文件存储到某个文件中.我想知道是否有一些我可以使用的更干净和原生的 Docker功能,在这里.

curl caching docker dockerfile

30
推荐指数
2
解决办法
2万
查看次数

标签 统计

docker ×2

dockerfile ×2

caching ×1

curl ×1

python ×1