首页 > 解决方案 > 我应该在生产代码库上使用 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-devcomposer.json.

我在Dockerfile:中有另一条指令,RUN composer install --no-dev --no-suggest这就是我收到此错误的原因 - 我在未安装的情况下运行dump-env命令。symfony/flex

要修复它,我可以将依赖symfony/flex项从.require-devrequirecomposer.json

所以问题是:

标签: phpdockersymfonysymfony-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 在他的评论中所说,“我认为没有理由在生产中避免使用这个包”。这是正确的 !此外,我看到很多理由在生产中使用它。


推荐阅读