CI / CD:适用于所有环境的一个dockerfile或适用于每个环境的一个dockerfile

时间:2019-03-07 16:55:01

标签: docker continuous-integration containers continuous-deployment

我的GitLab CI / CD具有dev / test / preprod / prod环境。根据最佳做法,我:

  • 每个环境是否有一个dockerfile
  • 在所有环境中都有一个dockerfile 吗?

首先,我认为针对所有环境进行唯一配置是容器的优势。但就我的情况而言,对于我的有角度的应用程序,我有很多开发依赖项(例如虚拟浏览器)用于测试目的,而不是在prod环境中。

我应该如何组织我的容器?

1 个答案:

答案 0 :(得分:1)

我创建一个基本映像并将其上传到我的注册表。它具有应在生产中使用的最少核心软件。

出于开发和测试目的,我基于基础映像创建了不同的Dockerfile。

例如,出于休息目的,我在基础映像上安装了测试框架,出于开发目的,我更改了基础映像内的用户和用户组ID。 (所以当我绑定挂载时,我在本地不会有权限问题)

出于CI目的,我也这样做。

当我要进行生产时,我从CI +配置中获取基本图像+工件进行生产,并将其捆绑在生产图像中。

长话短说,基于基础映像,每个contex都有一个基础映像(Dockerfile)和不同的Dockerfile。

通过此设置,我可以确保在所有环境中都具有相同版本的核心软件。