如何跟踪一个docker集装箱上的pip安装包,以便在另一个docker集装箱中使用它们

我试图参与docker魔术,并有一个问题:我想运行容器,其中安装所有的python包,并在这个“源”容器后运行我的Python脚本,使用安装在第一个docker集装箱包? 我有一个dockerfile,我已经安装了python3和点子,并在dockercompose.yml文件我build立所有的要求在第一个容器

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

另一种select是使用virtualenv和docker卷。

在一个图像中build立一个virtualenv并使其成为一个卷:

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

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

如果你想让默认的python site-packagespath成为VOLUME你可能不需要virtualenv。

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

 $ pip freeze > requirements.txt $ pip install -r requirements.txt 

把这一行添加到你的docker文件中:

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