自动化发布-16.系统部署如何处理不同环境配置文件

725 阅读2分钟

原文日期:2017-07-14


每个应用都会被部署到多个环境中运行,比如开发、SIT、UAT、预生产、生产。在这么多环境下,每个环境都会对应不一样的配置信息,比如数据库连接信息、外部系统接口信息。以下介绍下我的处理方式,纯属个人观念。

  • 在项目中增加五个配置文件,分别为dev、sit、uat、preprod、prod。他们分别代表各自环境的配置。在系统编译打包时增加一个变量env(值分别为dev、sit、uat、preprod、prod),通过该变量去决定当前发布部署的环境,并取对应环境的配置文件夹。该种方法有一个弊端,就是生产环境配置信息暴露出来,开发人员对生产环境了如执掌,不安全。以前项目采用的是这种方式。

  • 在git中增加一个配置项目config,然后在Jenkins中增加下载该项目的任务,并且通过gitlab的webhook方式同步config项目文件的变更。 这里的config就类似与配置中心,可以将所有项目的不同环境都置于此处,这样配置生产环境配置信息只有部署人员可以看到。目前我们是采用这种方式。

  • 如果采用docker容器部署的话,可通过在docker中加入git/SVN客户端,并在容器启动时根据入参值去拉取对应环境配置文件的脚本。这样可以保证容器与配置信息解耦,达到一个docker镜像可以在不同环境运行。目前docker容器化部署我们采用的是这种方式。

  • 增加配置中心系统,系统拉取配置信息时直接去配置中心系统中获取即可。暂未使用过。