在 Docker 容器中为 python 设置 virtualenv 是否有充分的理由?

Is there a good reason for setting up virtualenv for python in Docker containers?

几乎所有 python 教程都建议将 virutalenv 设置为第一步以保持一致性。在使用 Docker 容器时,为什么或为什么不应该维护这个标准?

如果您打算 运行 容器上只有一个版本,并且它是容器的系统版本,则没有技术理由在容器中使用 virtualenv。但仍然可能存在非技术原因。例如,如果您的团队习惯于在 ~/some-env 中查找 python 库,或者比容器的库更了解 virtualenv 结构,那么您可能仍想继续使用 virtualenv。

在 "cons" 方面,在现有系统之上的 virtualenv python 也可能会使您的图像稍大一些。

使用 docker 时,采用微服务概念很有意义。对于微服务,每个微服务都与特定的业务功能保持一致,并且只定义该业务功能所需的操作。这意味着每个应用程序都在一个或多个单独的 docker 映像中运行,并具有特定的依赖项(python 模块)。这使得不需要使用 virtualenv。