使用 vagrant 作为开发环境的一部分

And*_*dev 5 python development-environment vagrant

我正在研究将 vagrant 添加到我的开发环境的方法。我的大部分 Web 开发都是用 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 上设置它们可能要困难得多,我猜几乎是不可能的。

所以,问题是:对于第二种和第三种方法的问题有什么补救措施吗?更具体地说,如何创建一个隔离且易于复制的环境,同时享受在主机上开发的所有舒适度?

ROu*_*ofF 0

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