有关多个.env
文件和使用docker-compose.yml
或gitlab-ci.yml
处理它们的最佳实践的问题。
场景
我有一个基本设置,其中包含在docker-compose.yml
中定义的几个服务和一个gitlab-ci.yml
文件,该文件在Gitlab管道中运行构建,测试等。在本地,还有一个.env
文件。
在docker-compose.yml
中,我将.env
文件加载为
service_name:
env_file:
- .env
已加载的环境变量包含:
密码。
配置,例如。 DOMAIN_NAME
。我用docker-compose.yml
将其加载到${ENV_VAR}
中。
到目前为止一切顺利。
问题
此.env
文件应从源代码管理中删除,因为它包含密码。由于${ENV_VAR}
不再定义,导致Gitlab管道中的构建失败。
在我的用例中,不需要密码,但需要配置。
解决方案?
可能的解决方案是:
在Settings / CI / CD / Variables下的Gitlab UI中定义配置变量。
使用export
将它们在管道中注入到容器中。
这些解决方案似乎容易出错。
理想解决方案?
最好定义多个.env
文件,例如。 master.env
(具有配置),local.env
(具有密码)等。
只有master.env
是源代码管理的一部分,而local.env
不是源代码管理的一部分。在流水线构建期间,它不得因缺少local.env
而中断。
使用docker-compose.yml
和gitlab-ci.yml`实现此目的的最佳实践是什么?