在容器中build立和testing是否更好?

我正在为一个新项目创buildCI&CDpipe道。 由于我们使用的是Docker,下面是我的问题:在Docker容器中构build和testing是否更好,所以步骤如下:

  1. 构buildDocker镜像
  2. 在其中运行应用程序构build
  3. 在其中运行应用testing
  4. 推入Docker镜像

或在Docker容器之外,并且在CI通过后,构build映像:

  1. 直接在CI服务器(外部容器)上构build项目
  2. 在CI服务器(外部容器)上直接testing
  3. 构buildDocker镜像和推送

不需要使用Docker镜像来运行应用程序构build。 更重要的是,将build筑脚手架留在所得到的图像之外,通常是有益的。 另一方面,您可能更愿意使用同一个应用程序构build通过交付pipe道。 基于此,下面的序列可能会更好:

  1. 构build一个应用程序(无论是否有构build图像的帮助)
  2. 构build应用程序图像。
  3. 从该映像启动容器,运行testing。
  4. 成功后,将步骤2的图像推送到registry。