使用 DoctrineFixturesBundle 为生产数据库做种子是否安全?

Is it safe to seed production databases with DoctrineFixturesBundle?

我的应用程序需要一些行出现在一些表中才能在部署时正常运行。但是,我不确定 DoctrineFixturesBundle 在生产服务器上是否被写入 运行。它在我的开发机器上工作得很好,但在生产环境中使用它是否足够安全?

个人经历

自 2011 年底以来,我已将捆绑包与 doctrine/doctrine-migrations-bundle 一起集成到几个 symfony2 应用程序的(连续)部署过程中。

我从来没有 运行 遇到任何关于 fixtures-bundle 的问题。

我不得不承认,迁移包偶尔会让我有些头疼 - 但它同时在主观上感觉非常成熟和稳定。

一般信息

doctrine/data-fixtures 于 2010 年中期推出。[​​=23=]

doctrine/doctrine-fixtures-bundle(与 symfony2 项目集成的包)自 2011 年年中以来就存在。

根据 SensioLabs 的 survey,它是 最常用的 20 个软件包之一

capifony - the widely used deployment tool for symfony2 applications - has builtin 支持使用捆绑包加载固定装置。

测试覆盖率

doctrine/data-fixtures有个不错的test coverage.

捆绑包本身目前不提供任何测试...但它唯一提供的是一个非常简单的命令。看看 code.

结论

我想说这个包对于生产部署来说绝对是安全的,因为我现在已经这样做了 3 年多了。

超过 200 万 installsdoctrine/doctrine-fixtures-bundle 通过作曲家...我绝对不是唯一一个这样想的人。

我通常使用 if 在生产环境中加载新的(静态)数据,同时结合原则迁移。

例如,如果在现有项目上我们开发一个新实体来管理拓扑(viwh 或没有管理 CRUD 部分):

  • 我们发布迁移任务

  • 我们加载一组初始数据:

    php app/console doctrine:fixtures:load --append --env=prod --fixtures=src/AcmeDemoBundle/DataFixtures/ORM/ProdFixtures/NewTipology

选项--append允许在不全部删除的情况下将数据追加到现有数据库中,--fixtures可以传递一个文件夹作为输入以加载所有预设数据。

fixture class 可以访问扩展 ContainerAwareInterface 的现有数据(或其他容器服务)。

这是我的经验。

希望对您有所帮助。