docker - CI/CD 中的多个 .env 设置
问题描述
关于多个文件和使用或.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
文件应该从源代码管理中省略,因为它包含密码。这会导致 Gitlab 管道中的构建失败,因为${ENV_VAR}
不再定义。
在我的用例中,构建不需要密码,但配置是。
解决方案?
可能的解决方案是:
在 Gitlab UI 中的 Settings/CI/CD/Variables 下定义配置变量。
用于
export
在管道期间将它们注入容器中。
这些解决方案似乎确实容易出错。
理想的解决方案?
最好定义多个.env
文件,例如。master.env
(带配置),local.env
(带密码)等。
Onlymaster.env
是源代码控制的一部分,而local.env
不是。在构建管道期间,它不能因丢失而中断local.env
。
docker-compose.yml
使用& gitlab-ci.yml实现这一目标的最佳实践是什么?
解决方案
推荐阅读
- android - 在 Android WebView 中渲染已安装的应用程序 Drawable 图标
- python - 如何读取日志文件?
- html - Chrome 的检查窗格中的元素与同一网页的源文件中的元素之间的差异
- r - 如何在observeEvent 中运行两个for 循环?
- flutter - 如何显示一个颤振项目的所有测试?
- ios - 我可以快速获得接近传感器的特定值吗?
- javascript - electron-preload 函数调用另一个函数
- c++ - 使用 std::allocator 时 std::to_string 返回空字符串
- spring-boot - K8S 上的 Keyclaok:无法使用用户名和密码对用户进行身份验证
- python - 使用 Python 列表推导式创建两个列表?