当前位置: 首页 > 面试题库 >

使用docker时virtualenv是否达到目的(在生产中)?

申屠飞
2023-03-14
问题内容

对于开发,当涉及到依赖项时,我们使用virtualenv进行隔离开发。从这个问题来看,似乎建议在virtualenv中部署Python应用程序

现在,我们开始使用docker进行部署。这提供了一个更隔离的环境,因此我质疑docker容器内virtualenv的使用。对于单个应用程序,我不认为virtualenv有目的,因为docker已经提供了隔离。在将多个应用程序部署在单个docker容器上的情况下,我确实认为virtualenv具有用途,因为这些应用程序可能具有冲突的依赖关系。

在Docker容器中部署单个应用程序时应使用virtualenv吗?

docker应该包含多个应用程序还是每个容器仅包含一个应用程序?

如果是这样,那么在部署具有多个应用程序的容器时是否应该使用virtualenv?


问题答案:

Virtualenv是在docker之前创建的。今天,由于以下原因,我倾向于docker而不是virtualenv:

  • Virtualenv仍然意味着消费您产品的人们需要下载鸡蛋。有了docker,他们得到了“已知有效”的东西。没有任何附加条件。
  • Docker的功能远不止virtualenv(例如,当您拥有需要不同Python版本的产品时,创建一个干净的环境)。

Docker的主要缺点是对Windows的支持不佳。对于Windows 10版本,情况发生了变化。

至于“每个容器有多少个应用程序”,通常的策略是1。



 类似资料:
  • 问题内容: Kryo是一个非常新的有趣的Java序列化库,并且是节俭的protobuf基准测试中最快的库之一。如果您使用过Kryo,它是否已经成熟到可以在生产代码中试用的程度? 更新(10/27/2010): 我们正在使用Kryo,尽管尚未投入生产。请参阅下面的详细信息。 更新(3/9/2011): 更新到最新的Jackson和Kryo​​库表明,Jackson的二进制Smile序列化非常有竞争力

  • 问题内容: 我在查看Cristoph Gohlke的python软件包时 ,发现有一个适用于Python 3.3的Virtualenv软件包。 由于标准python库v3.3中有 venv 软件包,我想知道单独安装此软件包是否有优势。 编辑:从这两个软件包的文档中,virtualenv 1.8.2和 venv 我可以说 venv 标准库软件包缺少以下功能: 选项 在setuptools之间选择还是

  • 因为我想旋转多个虚拟机,LXD似乎是一个有效的选择 但作为docker,LXD似乎没有那么活跃, 最初的想法是,我使用LXC创建了一个启动测试容器,并安装了mongodb数据库,在重新启动容器后,mongodb中的数据至少是持久的。(这里我可能错了)和lxc容器交互就像登录到物理服务器一样简单。 有谁能提到LXD的优点、缺点和痛苦之处,就像本文提到的使用docker的个人体验一样? 喜欢回答的问题

  • 是否有办法使用virtualenv/virtualenvwrapper在特定目录(即当前目录)中创建virtualenv文件夹,而不是使用默认目录(即,)。 相当于:

  • 问题内容: 我正在考虑将virtualenv用于我在git存储库中创建的Django Web应用程序中。这似乎是使部署变得如此简单的一种简单方法。我为什么不应该这样做? 问题答案: 我通常pip freeze将所需的软件包放入requirements.txt文件中,然后将其添加到存储库中。我试图思考为什么您要存储整个virtualenv的方法,但是我不能。

  • 问题内容: 让表达方式知道我所处环境的最简单方法是什么?例如,我想根据我所在的环境执行以下操作以连接到Redis。可以从命令行完成吗? 问题答案: 您的方法是可以的,但是您可以做一些更通用的事情,例如将Redis的配置数据存储在文件中,或者像参数一样传递主机和端口: 然后在您的应用中,您可以使用process.argv来抓取它们: 更新: Express可以通过查看NODE_ENV变量(proce