如何在一个docker容器上跟踪pip安装的包,以便在另一个

时间:2015-11-30 17:48:44

标签: python docker docker-compose

我试图参与码头魔术并且有一个问题: 我想运行容器,其中安装了所有python软件包,然后运行了这个" source"容器运行我的python脚本,使用安装在第一个docker容器包上的脚本? 我有一个dockerfile,我在其中安装了python3和pip,在docker-compose.yml文件中我正在构建第一个容器中的所有需求

如何更新docker-compose.yml文件以使第二个容器能够使用在另一个容器包上安装的所有容器?

2 个答案:

答案 0 :(得分:2)

使用pip freeze获取所有已安装的pip包及其特定版本的列表。标准做法是为pip安装保留文本文件requirements.txt

$ pip freeze > requirements.txt

$ pip install -r requirements.txt

将此行添加到您的泊坞文件中:

ONBUILD RUN pip install -r /app/requirements.txt

答案 1 :(得分:0)

另一个选择是使用virtualenv和泊坞窗卷。

在一张图片中构建一个virtualenv并使其成为一个卷:

RUN virtualenv /venv
RUN /venv/bin/pip install ...
VOLUME /venv

对于第二个容器使用volumes_from: ['the-first-container']

如果您想将默认的python site-packages路径设为VOLUME,则可能不需要virtualenv。