在Docker构建中使用pip缓存目录

11 浏览
0 Comments

在Docker构建中使用pip缓存目录

我希望尽快将pip install指令放入docker build中。

我阅读了很多文章,解释了在应用程序的其余部分之前添加requirements.txt可以利用Docker自己的镜像缓存,如果requirements.txt没有变化。但是当依赖关系发生变化时,即使是稍微变化,这种方法就无济于事了。

下一步,如果我们可以使用一个一致的pip缓存目录就好了。默认情况下,pip会在~/.cache/pip(在Linux上)中缓存下载的包,因此如果您要安装的是系统中已经安装过的任何地方的同一版本的模块,它就不需要再次下载,而是直接使用缓存的版本。如果我们可以为docker构建使用共享的缓存目录,这可以大大加快依赖项的安装速度。

然而,似乎没有任何简单的方法可以在运行docker build时挂载卷。构建环境似乎基本上是不可渗透的。我找到了一篇文章,建议在主机上运行一个rsync服务器,然后通过在构建中使用一个小技巧来获取主机IP,从主机同步pip缓存。但是我并不喜欢在Jenkins中运行rsync服务器的想法(即使在最好的时候,Jenkins也不是最安全的平台)。

有人知道是否有其他更简单的方法来实现共享缓存卷吗?

0