热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

在Dockerfile中激活pythonvirtualenv

如何解决《在Dockerfile中激活pythonvirtualenv》经验,为你挑选了3个好方法。

我有一个Dockerfile,我尝试激活python virtualenv之后,它应该在这个环境中安装所有依赖项.但是,一切仍然在全球范围内安装.我使用了不同的方法,但没有使用它们.我也没有任何错误.哪里有问题?

1. ENV PATH $PATH:env/bin

2. ENV PATH $PATH:env/bin/activate

3. RUN . env/bin/activate

我还在Google Cloud上关注了python-runtime图像的Dockerfile配置示例,这与上面的内容基本相同.

设置这些环境变量与运行source/env/bin/activate相同.

ENV VIRTUAL_ENV /env

ENV PATH /env/bin:$PATH

此外,ENV VIRTUAL_ENV /env它是什么意思和使用方式?



1> Marcus Lind..:

您不需要在Docker容器中使用virtualenv.

virtualenv用于依赖性隔离.您希望防止安装的任何依赖项或软件包在应用程序之间泄漏.Docker实现了同样的功能,它隔离了容器中的依赖项,并防止容器之间和应用程序之间的泄漏.

因此,除非你在同一个容器中运行多个应用程序,否则在Docker容器中使用virtualenv是没有意义的,如果是这样的话,我会说你做错了什么,而解决方案就是在一个容器中构建你的应用程序.更好的方法,并将它们分成多个容器.


关键是节省空间。您可以按原样复制`virtualenv`目录,而无需在目标映像中使用python3-virtualenv。这样可以节省整个工具链(gcc和朋友),从而节省数百兆字节。
许多Python软件包仅支持在虚拟环境中安装,在这种情况下,能够激活docker容器内的venv非常有用.

2> Ellis Perciv..:

正如其他人所说的那样,docker容器中的virtualenvs有点边缘,但仍有合理的理由.

您不一定需要激活virtualenv来安装软件或使用它.尝试直接从virtualenv的bin目录调用可执行文件:

FROM python:2.7

RUN virtualenv /ve
RUN /ve/bin/pip install somepackage

CMD ["/ve/bin/python", "yourcode.py"]



3> pinty..:

虽然我同意Marcus认为这不是Docker的做法,但你可以做你想做的事.

直接使用Docker的RUN命令不会给你答案,因为它不会在虚拟环境中执行你的指令.而是使用/ bin/bash挤压在一行中执行的指令.以下Dockerfile为我工作:

FROM python:2.7

RUN virtualenv virtual
RUN /bin/bash -c "source /virtual/bin/activate && pip install pyserial && deactivate"
...

这应该只在虚拟环境中安装pyserial模块.


推荐阅读
author-avatar
超可爱萌地1983
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有