首页 > 解决方案 > CI/CD 中的多个 .env 设置

问题描述

关于多个文件和使用或.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文件应该从源代码管理中省略,因为它包含密码。这会导致 Gitlab 管道中的构建失败,因为${ENV_VAR}不再定义。

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

解决方案?

可能的解决方案是:

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

  2. 用于export在管道期间将它们注入容器中。

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

理想的解决方案?

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

Onlymaster.env是源代码控制的一部分,而local.env不是。在构建管道期间,它不能因丢失而中断local.env

docker-compose.yml使用& gitlab-ci.yml实现这一目标的最佳实践是什么?

标签: dockerdocker-composegitlabenvironment-variables

解决方案


推荐阅读