阻止Docker在每个版本上安装python软件包要求(没有requirements.txt)

时间:2019-02-08 10:59:39

标签: python docker dockerfile setuptools

我正在从Dockerfile构建映像,其中我的主程序是具有许多依赖项的python应用程序。该应用程序是通过setup.py安装的,其相关性在其中列出。没有requirements.txt。我想知道是否有一种方法可以避免必须下载和构建所有应用程序依赖项,而这些依赖项在每次映像构建时都很少改变。我看到了许多使用requirements.txt文件的解决方案,但如果可能的话,我想避免使用它。

2 个答案:

答案 0 :(得分:1)

您可以使用鸡蛋信息中的requires.txt来预先安装需求。

WORKDIR path/to/setup/script
RUN python setup.py egg_info
RUN pip install -r pkgname.egg-info/requires.txt

答案 1 :(得分:0)

一个解决方案是:如果您说的那些依赖关系很少改变,您可以做的是安装已经安装了这些软件包的另一个映像。您将创建该映像,然后使用 docker save 保存该映像,从而以具有所需依赖关系的新基础映像结束。 docker save 将使用图像创建一个 .tar 。您必须使用 docker load 加载图像,然后在 Dockerfile 中执行以下操作:

FROM <new image with all the dependencies>
//your stuff and no need to run pip install
....

希望有帮助

Docker save description