php - 我应该在生产代码库上使用 Symfony Flex 吗?

标签 php docker symfony symfony-flex

我正在写Dockerfile我的新 PHP 应用程序使用 Symfony 5 和 Flex。

我运行的构建命令之一如下: RUN composer dump-env prod

它给了我错误:

 [Symfony\Component\Console\Exception\CommandNotFoundException]  
  Command "dump-env" is not defined.  

我明白了,因为 dump-env命令源自 symfony/flex Composer 依赖项,该依赖项位于我的 require-devcomposer.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。因此,即使任何 bundle 有新的配方,flex 也不会更新您的源代码。我猜你的 env 文件会在安装过程中更新。所以,让这个包投入生产是没有问题的。您可以将其替换为个人命令。我想这个包已经过测试并且稳定。许多开发人员和维护人员都使用它。所以,我猜它是“防错误的”。你的命令会更稳定吗?我不这么认为,即使你复制源代码,因为你的代码不会总是与 flex 命令同步。

Flex 已集成到 Symfony。我们甚至可以说,flex 是用来集成 symfony 包的。因此不存在不兼容的风险。

如果是,使用它的其他原因是什么? Flex 是否会以某种方式影响应用程序性能? Flex 不会影响应用程序的性能,因为它从未被调用。 “从不”不是一个好术语,它仅在调用 dump-env 命令时使用。

另一个原因:symfony-demo 和 symfony-sculpture 是尊重 Symfony 最佳实践的应用程序。 Symfony 团队决定让 Flex 出现在产品包中,而不是开发包中。

因此,正如 Jakumi 在评论中所说,“我认为没有理由在生产中避免使用这个包”。这是正确的 !此外,我认为有很多理由在生产中使用它。

关于php - 我应该在生产代码库上使用 Symfony Flex 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62089221/

相关文章:

php - 使用 gdlib 复制透明 PNG

javascript - 如何使用 javascript/jquery 使用多个确认对话框

php - 我的网站是否需要 ssl 才能集成社交媒体登录

angular - 将 docker-compose 中的环境变量注入(inject) Angular4 应用程序

php - 在 Symfony 中创建一个 Cache Provider 类

php - Symfony 6.3 迁移导致无状态验证器强制请求无状态的问题

api - Symfony 2 - FOSUserBundle - 如何集成到 API 中

php 文件文本,每次在 mysql 基值数据中添加一行

docker - Mesos和Marathon中的Docker容器磁盘大小

docker - 流式传输多个 docker 容器音频