Docker或Vagrant会帮助我们为企业产品创buildtesting机器吗?

我正在开发一个企业级产品,主要有3件基于swing的客户端,DB,Server(现在我们可以忽略DB部分)。 作为企业产品客户端和服务器自带安装程序(它不像configurationApache或JBOSS和部署战争)。

我们将CIconfiguration为生成可安装的客户端和服务器的夜间操作系统特定版本。

因此,我们必须定期在特定的操作系统上testing这些构build,这需要在Y OS或X版本服务器上使用X版本客户端在Y OS上安装和创build系统的大量手动过程。 这是非常乏味的,因为我们都在窗户上,下一步 – >下一步 – >真的很烂(我已经创build了一个脚本,通过shell安装我们的产品,但它仍然是我认为可以自动化的步骤,但不怎么样)。 而且我们还需要一个隔离。

现在我正在考虑如何自动化创build这些testing机器的过程。 我刚开始探索Vagrant / Docker是否对我有帮助(在他们的概念下,仍然不了解Puppet / Chef),我很困惑应该采取哪种策略

  1. 通过vagrant创buildVM并在该框上运行我的安装脚本(这将需要每个客户端或每个服务器一个VM)
  2. 通过vagrant创build虚拟机,并运行我的客户端docker容器(我猜,这将需要一个虚拟机多个客户端或服务器,因为他们将在容器)

注意:我必须创buildVM,因为我们在window.e,通过vagrant或通过boot2docker

所以我的问题是

  1. 如果这两个策略是有效的而不是错误的,那么在这两个策略中,我应该采用两种策略之一吗?
  2. 我有没有什么不同的策略,或者我以正确的方式接近?
  3. 如果战略#2将被采用,那么我怎样才能创build我的客户端安装的容器/泊坞窗图像

我怎样才能创build我的客户端安装的容器/泊坞窗图像

你必须把你所做的所有事情都放在一个Dockerfile中,以便让你的客户端启动和configuration。

为了做到这一点,你可以创build一个容器,做所有的事情,然后docker commit或者更好的方法是把所有需要的命令放在一个Dockerfile中,这样当你做一个小小的修改时,你可以build立一个新的版本很容易与一个基本的docker build -t myclient_version_n .

检查文档

以及如何自动构build

如何创build一个Dockerfile

并查看docker Hub中现有的集装箱化应用程序的Dockerfiles

Vagrant的另一种select是使用Docker Machine。 您也可以像@ m1keil一样利用云提供商。 机器可以提供多个提供商的Docker主机,他们准备好去。

披露:我在Docker工作,是机器的维护者:)

  1. 你的策略似乎对我有效。 由于初始化时间和容器的一般资源消耗较低,所以将容器(docker)添加到stream程中可能有助于加快并行化testingstream程(如果是全自动testing)。 但是,如果不先检查testing过程,就不能给出明确的答案。 而且由于你没有提供任何细节,所以很难告诉你是否应该使用第一个或第二个策略。
  2. 您可以利用云并使用AWS,Azure,GCE等服务来初始化机器并运行testing。 您可以使用Vagrant来执行此操作,也可以跳过Vagrant并通过使用所选Cloud提供程序的相应API来创build自己的简单脚本。 你也可以看一下Travis.ci,Circle.ci等服务,这可能会帮助你创build自动化的testingpipe道,而不需要在pipe道上花费太多的时间。

我真的很喜欢通过Dockerfile的docker的易用性。 Dockerfile让您可以轻松更新和控制Docker映像中的软件,然后在您的CI /testing环境中configuration它。 Docker现在具有本机Windows支持,所以这不应该阻止你使用它:此外,我喜欢你可以设置非常轻量级的,最小的机器只有您的项目需要构build和运行时依赖项,并将其免费存储在hub.docker.com上。 根据构build和安装某些依赖关系需要多长时间,这可以加速您的testing,因为您可以下载一个已经安装和构build的所有东西的Docker镜像,然后构build并testing您的实际项目。

我使用https://github.com/sourceryinstitute/opencoarrays这是GCC官方实现的Coarray Fortran。 我有一个小项目https://github.com/zbeekman/nightly-docker-rebuild ,可以让你在两分钟之内在hub.docker.com上设置每晚的Docker镜像版本。 我使用这个来触发https://github.com/zbeekman/nightly-gcc-trunk-docker-image的构build,因为我不能在没有构build超时的情况下从Travis-CI.org的源码重buildGCC。 通过这种方式,我将GCC每晚构build委托给hub.docker.com,然后将docker pull zbeekman/nightly-gcc-trunk-docker-image到travis-ci实例中,以对最新的GCC主干进行OpenCoarraystesting。