【问题标题】:Using vagrant as part of development environment使用 vagrant 作为开发环境的一部分
【发布时间】:2013-12-24 09:12:19
【问题描述】:

我正在研究如何将 vagrant 添加到我的开发环境中。我的大部分网络开发都是在 python 中完成的,我对 python 相关的细节很感兴趣,但是这个问题更笼统。

我喜欢将所有与开发相关的东西都隔离在虚拟机中的想法,但我还没有找到一种有效的方法来使用它。基本上,我看到了 3 种设置方法:

  1. 让所有服务(如数据库服务器、MQ 等)以及正在开发的应用程序在 VM 中运行。开发人员可以通过 ssh 连接到 VM 并在那里编辑源代码、运行应用程序、测试等,所有这些都在 ssh 终端中完成。

  2. 与 1) 相同,但使用普通 GUI 编辑器在映射目录中编辑主机上的源。通过 ssh 在 vagrant 上运行应用程序和测试。这似乎是最流行的使用 vagrant 的方式。

  3. 仅在 VM 中托管外部服务。将应用程序依赖项安装到主机上的 virtualenv 并从那里运行应用程序和测试。

所有这些方法都有自己的缺陷:

  1. 在文本控制台中开发实在是太不方便了,这对我来说是个阻碍。虽然我是一位经验丰富的 ViM 用户并且可以接受它,但我不能向曾经在任何图形 IDE 中工作的任何人推荐这种方法。

  2. 您可以使用熟悉的工具进行开发,但不能使用自动补全,因为所有 python 库都安装在 VM 中。您的回溯将指向非本地文件。您将无法在编辑器中打开库源,ctags 将不起作用。

  3. 失去大部分“隔离”功能:您必须自己安装所有编译器、*-dev 库才能安装 python 依赖项并运行应用程序。在 linux 上这很容易,但在 OSX 上设置它们可能要困难得多,在 Windows 上我猜这几乎是不可能的。

那么,问题是:对于第 2 和第 3 方法的问题是否有任何补救措施?更具体地说,如何创建一个隔离且易于复制的环境,同时享受在主机上开发的所有舒适性?

【问题讨论】:

  • 我也有类似的想法。你找到好的解决方案了吗?最近我一直在想 Docker(或者更普遍的 Linux 容器)可能会提供更好的系统,但我还没有测试过。
  • 就个人而言,我使用的是上面的第三个选项。我所有的开发人员都使用 Ubuntu,因此我们可以拥有非常相似的主机配置。所以我们只需要安装一堆 ubuntu 包就可以了。我得出的结论是,您必须以开发环境独立的名义做出这些牺牲。 And it only makes sense to switch to option 1 or 2 when ongoing price of option 3 becomes too high (i.e. you have to support too many dev environment variants).但我仍然关注它。如果 Docker 至少解决了其中一些问题,请告诉我!
  • 我对#3 的问题是,如果不同的项目有相互冲突的依赖关系该怎么办。现在我意识到 PyCharm 通过允许远程 Python 解释器与 Vagrant 一起工作。当然,它是特定于 Python 的,可能会将您绑定到 IDE(我不知道其他人是否支持这一点)。使用 Docker,我希望您可以为每个项目提供一个开发环境,并配有 GUI 编辑器。当然,您已经可以使用其他虚拟化方法做到这一点,但性能成本更高。

标签: python development-environment vagrant


【解决方案1】:

在大多数 IDE 中,您可以添加项目外部的“库”路径,以便您的代码完成等工作。关于回溯,我对 python 不熟悉,但这听起来像是通过服务器和开发机器之间的“映射”路径解决的问题。这通常是为什么 #2 通常是要走的路的原因(除非你有一个团队愿意做 #1)。

【讨论】:

  • 您可以在项目外部添加库路径,但不能在虚拟机内部添加,除非您在 Vagrant 实例和主机之间共享的文件夹比代码目录更宽(您可以这样做,我想,我还没有考虑到它是否实用)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-14
  • 2016-10-31
  • 2014-08-02
  • 2012-12-22
  • 1970-01-01
相关资源
最近更新 更多