为了测试/预览目的,我希望在单独的vhost/域上运行/宿主项目Git存储库的特定分支。我正在考虑一个过程,在Git推送之后,将分支部署到“预览”或“测试”服务器,以便在浏览器中进行手动测试。
例如,将一个名为“特性/我的新特性”的分支部署到一个特定的服务器上,并在像“my-newfeature.project.com”这样的URL上访问该项目,这将是很好的。
我面临的问题(理论上,首先)主要是数据库连接/配置、端口等方面的挑战。例如,如果一个服务器上有多个分支运行在不同的子域上,那么它们需要共享一个MySQL安装--但实际上每个分支都需要它自己的单独的MySQL实例,因为所有分支的数据库配置都不会改变,这意味着它们连接到同一个主机,使用相同的数据库名称、用户等等。
一种方法可能是为它自己的子域上的每个分支运行一个VM,将端口直接映射到VM (至少我认为这是可能的),但是对于许多分支的项目来说,这意味着我需要大量的硬件能力来处理这个问题。(而且可能还有很多钱。)
然后,我听说了docker和/或Linux容器,并认为这也许能解决问题,但我不完全确定它是如何工作的,是否起作用。
我想知道,在没有干扰服务和相关冲突问题的情况下,并行运行多个项目版本的既定方法是什么。
是否可以使用码头进行这样的设置,或这是完全错误的方向,我的方向?
非常感谢你的朋友们。
发布于 2013-10-05 12:24:31
你的问题范围相当大。
关于linux容器和坞是否适用于您的想法:是的,当然可以。容器的部署是轻量级和廉价的(比VM便宜得多),使用容器进行连续部署/并行测试确实非常有效。
现在,下面是docker的工作原理:创建一个dockerfile,该文件描述应用程序在容器中需要什么服务(mysql,php,其他什么),在容器OS上需要什么特定的调优/设置,以及将应用程序代码放在哪里。然后您将从该dockerfile创建一个“映像”,最后从该映像启动一个新容器,该容器将完全独立,为您的应用程序执行提供一个“干净的空间”上下文。
容器具有特定的ip,并将公开您在其上选择的服务。然后,这些服务将被NATed放到主机上(您甚至可以在启动时选择哪个端口)。然后,使用nginx对这些容器进行反向代理非常简单,因此可以从不同的域名/ urls中为这些容器提供服务。
您可以在这里了解dockerfile (通常还有docker ):http://docs.docker.io/en/latest/
如果我真的要这样测试树枝,我会:
http://example/branch到http://localhost:NATTED_PORT/请注意,Hipache (https://github.com/dotcloud/hipache)可能是将nginx作为代理的替代方案,尽管我没有使用它的第一手经验。
这是一个粗略的描述所涉及的步骤,你可能有一些学习,但这应该会让你走上轨道,我希望。
https://stackoverflow.com/questions/19191839
复制相似问题