【问题标题】:How to keep track of pip installed packages on one docker container to use them in another如何跟踪一个 docker 容器上的 pip 安装包以在另一个容器中使用它们
【发布时间】:2015-12-02 13:00:38
【问题描述】:

我正在尝试参与 docker magic 并且有一个问题: 我想运行安装了所有 python 包的容器,然后在这个“源”容器运行我的 python 脚本,它使用安装在第一个 docker 容器包上的那些? 我有一个 dockerfile,我在其中安装了 python3 和 pip,在 docker-compose.yml 文件中,我在第一个容器中构建所有要求

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

【问题讨论】:

    标签: python docker docker-compose


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 我想在一个容器中安装一次需求并在另一个容器中使用它们
    • @DmitryMarkovnikov 然后创建并推送一个具有依赖关系的图像,并将其用作其他图像的基础图像。不过,我觉得你想多了。 Docker 将为 Docker 文件中的每一行创建一个层。 pip 安装结果只会存储一次。
    【解决方案2】:

    另一种选择是使用 virtualenv 和 docker 卷。

    在一个镜像中构建一个 virtualenv 并使其成为一个卷:

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

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

    如果您只想将默认的 python 站点包路径设置为 VOLUME,则可能不需要 virtualenv。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-14
      • 1970-01-01
      • 1970-01-01
      • 2015-04-24
      • 2017-10-19
      • 1970-01-01
      相关资源
      最近更新 更多