借助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/