【发布时间】:2020-07-07 13:21:58
【问题描述】:
我是 Zend Framework 的长期用户(现在更名为 Laminas)。但我决定尝试上一个 Symfony 版本。所以我只是在5.1.2中安装了它。
我面临一个关于多环境部署的问题。在我的公司,我们有:
- 本地环境,即开发者电脑。
- 发展。
- 暂存。
- 生产。
在 ZF-Laminas 中,我们有一个 global.php 文件,它位于 config 目录中。 对于不熟悉这个框架的人,可以通过创建 local.php 文件来覆盖 global.php 文件中的键集。
在这个全局文件中,我用来放置我的应用程序的标准配置。
例如(产品):
'open_id' => [
'client_id' => 1234
]
然后,我有开发和暂存文件,其中汽车会覆盖每个环境的这些值。部署时将环境对应的文件复制到local.php中。
假设 staging.local.php.dist 变成 local.php :
'open_id' => [
'client_id' => 5678
]
这很好,因为值会覆盖全局文件中的值。
我希望在 Symfony 中具有相同的行为,但在 Symfony 5 中没有看到类似的东西。
到目前为止,我只发现了两种可能
-
创建一个包,它允许我在 config/packages 目录中有一个
.yaml 文件。根据文档 (https://symfony.com/doc/current/configuration.html#configuration-files),我将能够拥有 dev、prod 和 staging 覆盖。但它迫使我创建一个捆绑包来处理一些标准配置,这是巨大的。 -
使用 .env 文件。但是 .env 文件只允许字符串数据,而不是像数组这样的复杂数据。
我想念什么?还是我的“zend”做事方式是错误的?
谢谢。
【问题讨论】:
标签: php deployment config symfony5