创建一个易于分发的开发环境 - Docker / Vagrant?

时间:2014-12-11 00:32:09

标签: vagrant docker development-environment

我正在试图弄清楚如何使用我的组织的Wordpress网站轻松分发“开发环境”。我们目前有一个运行Wordpress站点的本地Linux服务器,以及一个非常过时的VirtualBox映像,并且该服务器的表示非常差。我们目前将此分发给团队成员进行本地开发,这会导致很多问题,因为本地图像往往太不同了。

我不太担心数据库方面的问题;我正在考虑从实时服务器进行每周转储,开发人员可以导入这些转储以保持本地最新。

我更感兴趣的是找到一个易于将预配置的堆栈分发给OSX或Windows上的用户,这些用户已经配置了PHP / Apache / MySQL,git客户端设置为在命令中提取所有静态文件 - 用户可以运行的东西,然后转到localhost:8000查看它。我还想让他们有一些方法来编辑从git存储库中提取的文件。

我目前正在研究Docker和Vagrant,但我不确定什么更适合这项任务 - Docker似乎更适合Linux机器。我知道Vagrant支持将外部文件夹映射到VM中,这似乎解决了我的问题,但我想在开始学习Chef / Puppet等之前提出更多建议。

1 个答案:

答案 0 :(得分:1)

我认为Vagrant和Docker都可以用来解决你的问题。 Vagrant可能更适合与Windows / mac机器共享环境,但在这些系统中与Docker的集成使用boot2docker等工具每天都更好。 相比之下,Docker需要使用现代Linux内核或其中一种工具。

如果我必须开发Vagrant选项,我会在同一台机器上安装一台安装了所有依赖项的机器。要安装,您可以使用Vagrant中提供的一个配置程序(例如:Chef,Puppet)。如果您之前有使用它们和/或如果您不是非常热衷于bash,这可能会更容易。您可以查看很多示例,了解如何执行此操作,例如https://github.com/r8/vagrant-lamp

使用Docker也是一个非常好的选择。回答您的问题,您可以与容器共享主机的任何本地文件夹(使用docker run选项-v--volume)。在这种情况下,我将运行您想要提供的每个服务(即:php服务器,MySQL,Apache ..)作为独立容器,并使用docker run选项--link链接它们。对Dockerfiles进行编程以构建此容器可能比使用Chef或Puppet更困难(尽管您可以使用它们来构建容器,但集成并不像Vagrant那样好)。但是使用Docker,您可以提前使用Docker Hub中提供的所有应用程序。我还建议你使用一个名为fig(www.fig.sh)的docker工具,它可以让运行容器集群轻松链接和配置服务,并且允许以非常舒适的方式管理所有容器。您再次可以通过互联网找到此用户案例的非常具有说明性的示例,例如https://github.com/kasperisager/phpstack