CI / CD

时间:2020-05-30 22:49:41

标签: docker docker-compose gitlab environment-variables

有关多个.env文件和使用docker-compose.ymlgitlab-ci.yml处理它们的最佳实践的问题。

场景

我有一个基本设置,其中包含在docker-compose.yml中定义的几个服务和一个gitlab-ci.yml文件,该文件在Gitlab管道中运行构建,测试等。在本地,还有一个.env文件。

docker-compose.yml中,我将.env文件加载为

service_name:
  env_file:
    - .env

已加载的环境变量包含:

  1. 密码。

  2. 配置,例如。 DOMAIN_NAME。我用docker-compose.yml将其加载到${ENV_VAR}中。

到目前为止一切顺利。

问题

.env文件应从源代码管理中删除,因为它包含密码。由于${ENV_VAR}不再定义,导致Gitlab管道中的构建失败。

在我的用例中,不需要密码,但需要配置。

解决方案?

可能的解决方案是:

  1. 在Settings / CI / CD / Variables下的Gitlab UI中定义配置变量。

  2. 使用export将它们在管道中注入到容器中。

这些解决方案似乎容易出错。

理想解决方案?

最好定义多个.env文件,例如。 master.env(具有配置),local.env(具有密码)等。

只有master.env是源代码管理的一部分,而local.env不是源代码管理的一部分。在流水线构建期间,它不得因缺少local.env而中断。

使用docker-compose.yml和gitlab-ci.yml`实现此目的的最佳实践是什么?

0 个答案:

没有答案