Docker或Vagrant会帮助我们为企业产品创建测试机器

时间:2015-01-23 15:02:09

标签: java vagrant docker

我正在开发一个企业产品,主要有3个基于swing的客户端,DB,Server(现在我们可以忽略数据库部分)。作为企业产品,客户端和服务器都带有自己的安装程序(它不像配置apache或JBOSS并在其上部署war)。

我们已配置CI以生成可安装的客户端和服务器的夜间操作系统特定版本。

因此我们必须定期在特定操作系统上测试这些构建,这需要在Y OS上的Y OS或X版本服务器上安装和创建具有X版客户端的系统的大量手动过程。这变得非常繁琐,因为我们都在窗户上做下一步 - >下一个 - >真的很糟糕(我创建了一个脚本,通过shell安装我们的产品,但它仍然是我认为可以自动化的步骤,但不是如何)。而且我们也需要隔离。

现在我在想如何自动化创建这些测试机器的过程。我刚刚开始探索Vagrant / Docker,如果它们对我有帮助(并且根据他们的概念,但仍然不了解Puppet / Chef)我很困惑我应采用哪种策略

  1. 通过vagrant创建VM并在该框上运行我的安装脚本(这将需要每个客户端或每个服务器一个VM)
  2. 通过vagrant创建VM并在其上运行我的客户端docker容器(我想这将需要一个VM用于多个客户端或服务器,因为它们将在容器下)
  3. 注意:我必须创建VM,因为我们在window.n通过vagrant或通过boot2docker

    所以我的问题是

    1. 如果这2个策略有效且没有错,那么我应该采用哪两种策略?
    2. 我是否有任何不同的策略,或者我正确地接近这个策略?
    3. 如果要采用策略#2,那么如何创建安装客户端的容器/泊坞窗图像

4 个答案:

答案 0 :(得分:1)

  
    
      

如何创建安装了客户端的容器/泊坞窗图像

    
  

您必须将所有操作都放入Dockerfile,以便启动和配置客户端。

为了做到这一点,你可以创建一个容器,做所有的事情,然后docker commit或更好的方法是将所有必需的命令放在Dockerfile中,这样当你做一些修改,您可以使用基本docker build -t myclient_version_n .

轻松构建新版本

检查文档

以及如何自动构建

如何创建Dockerfile

并查看docker Hub中容器化应用程序的现有Dockerfiles

答案 1 :(得分:1)

Vagrant的替代方案是使用Docker Machine。您也可以像@ m1keil一样提及云提供商。 Machine可以在许多提供商上配置Docker主机,并且可以随时使用。

披露:我在Docker工作并且是Machine的维护者:)

答案 2 :(得分:0)

  1. 你的策略似乎对我有用。向您的进程添加容器(docker)可能有助于您加速和并行化测试过程(如果它是全自动测试),因为初始化时间和容器的一般资源消耗较低。但是,如果不先检查测试过程,就无法给出明确的答案。由于您没有提供任何有关它的详细信息,因此很难告诉您是否应该使用第一个或第二个策略。
  2. 您可以利用云并使用AWS,Azure,GCE等服务来初始化计算机并运行测试。您可以使用Vagrant执行此操作,或者跳过Vagrant并使用所选Cloud提供程序的相应API创建自己的简单脚本。 您还可以查看Travis.ci,Circle.ci等服务,这些服务可以帮助您创建自动化测试管道而无需在管道上花费太多时间。

答案 3 :(得分:0)

我非常喜欢Docker通过Dockerfile轻松使用。 Dockerfile让您可以非常轻松地更新和控制docker镜像中的软件,然后您可以在CI /测试环境中进行配置。 Docker现在具有本机Windows支持,因此这不应该阻止您使用它:https://docs.docker.com/docker-for-windows/此外,我喜欢您可以设置非常轻量级的最小机器,只需要您的构建和运行时依赖性项目,并在hub.docker.com上免费存储它们。取决于构建和构建所需的时间。安装某些依赖项,这可以加快您的测试速度,因为您只需下载已安装和构建的所有内容的docker镜像,然后构建并测试您的实际项目。

我将此用于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的构建,因为我无法在没有构建超时的情况下从Travis-CI.org上的源重建GCC。这样,我将GCC每晚构建委托给hub.docker.com,然后将docker pull zbeekman/nightly-gcc-trunk-docker-image委托给travis-ci实例,以针对最新的GCC主干测试OpenCoarrays。