php - 我应该在生产代码库上使用 Symfony Flex 吗?
问题描述
我正在Dockerfile
使用带有 Flex 的 Symfony 5 为我的新 PHP 应用程序编写代码。
我运行的构建命令之一如下:
RUN composer dump-env prod
它给了我错误:
[Symfony\Component\Console\Exception\CommandNotFoundException]
Command "dump-env" is not defined.
我明白了,因为dump-env
命令来自 symfony/flex 作曲家依赖项,它位于我require-dev
的composer.json
.
我在Dockerfile
:中有另一条指令,RUN composer install --no-dev --no-suggest
这就是我收到此错误的原因 - 我在未安装的情况下运行dump-env
命令。symfony/flex
要修复它,我可以将依赖symfony/flex
项从.require-dev
require
composer.json
所以问题是:
- 我应该在生产代码库中使用 Symfony Flex 吗?
- 如果没有,我如何运行
dump-env
命令来提高生产性能? - 如果是,使用它的其他原因是什么?Flex 会以某种方式影响应用程序的性能吗?
解决方案
这是一个好问题,因为“避免无用的包”总是“避免兼容性问题”的好主意。
我应该在生产代码库中使用 Symfony Flex 吗?
在您的安装过程中,您使用 flex: 提供的命令dump-env
,因此您必须在生产环境中安装它。所以我认为你应该使用它。
flex 的主要问题是它可以改变你的源代码和环境文件。但是,在您的安装过程中,您不会调用composer update
, 而是composer install
. 因此,即使任何捆绑包有新配方,flex 也不会更新您的源代码。我猜您的 env 文件将在您的安装过程中更新。所以,让这个包在生产中是没有问题的。您可以将其替换为个人命令。我猜这个包已经过测试并且稳定。许多开发人员和维护人员都在使用它。所以,我想这是“防虫”。你的命令会更稳定吗?我不这么认为,即使您复制源代码,因为您的代码不会总是与 flex 命令同步。
Flex 已集成到 Symfony。我们甚至可以说 flex 用于集成 symfony 的捆绑包。所以不存在不兼容的风险。
如果是,使用它的其他原因是什么?Flex 会以某种方式影响应用程序的性能吗? Flex 不会影响应用程序的性能,因为它从未被调用过。“从不”不是好词,它只在调用 dump-env 命令时使用。
另一个原因:symfony-demo 和 symfony-skeleton 是尊重 Symfony 最佳实践的应用程序。Symfony 团队决定让 flex 在 prod 包中,而不是在 dev 包中。
因此,正如 Jakumi 在他的评论中所说,“我认为没有理由在生产中避免使用这个包”。这是正确的 !此外,我看到很多理由在生产中使用它。
推荐阅读
- machine-learning - 自动将 On-Premise ML 训练模型移动到 Azure 存储
- html - 如何更改 HTML 中标题的颜色?
- android - Android Studio:模式中的 TableRow 不起作用
- java - 无法在 .Net c# 上匹配来自 Java 的 SHA256withRSA 签名
- vee-validate - VeeValidate v3 扩展了对 Vue 数据的访问
- python - 使用远程服务器上的 Python 代码通过 SFTP 传输文件?
- javascript - 检查包含保存在 chrome.storage.local 中的对象数组的对象中的键
- ios - 需要在崩溃时修复错误:thunk for @escaping @callee_guaranteed () -> () + 28 (
:0) - java - Spring Boot 2:{“error”:“unauthorized”,“error_description”:“访问此资源需要完全身份验证”}
- javascript - 有没有办法获得firestore Collection的名称?