借助Docker等容器化应用程序,是否可以使用virtualenv,以使环境从构建过程一直运行到最终运行镜像?似乎通过pip创建virtualenv并运行环境似乎无法正常工作。

例如:

RUN pip3 install virtualenv
RUN virtualenv venv
RUN source venv/bin/activate

似乎永远不会呈现一个真正的虚拟环境,而将在该环境下安装以下pip安装。我需要或认为我需要此设置的原因是,特定目录使用的依赖项是相邻目录的不同版本:文件夹B使用numpy版本X,而文件夹C使用numpy版本Y。

使用Docker,我是否忘记了一个工具或功能,可以让我像虚拟环境一样使用pip安装,并且在不同目录中具有相同依赖项的不同版本?

最佳答案

Docker RUN是一个构建步骤。它在先前的基础上创建了一个新层,并实质上创建了一个新图像。因此,您的问题的答案是“否”。

考虑使用ENTRYPOINT和/或CMD,或者为了方便起见编写启动脚本。

编写RUN脚本也可能会满足您的需求:RUN my_deploy_for_venv.sh将在一层执行,因此,如果您在脚本中启动venv,则在执行过程中应使用它。但是,您将不得不在容器启动时再次启动它。

关于python - Docker虚拟环境,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49756084/

10-14 17:03
查看更多