【问题标题】:Is there a recommended way to deal with deploying pages from local dev to prod?有没有推荐的方法来处理将页面从本地开发部署到产品?
【发布时间】:2017-10-02 23:09:13
【问题描述】:

例如,假设我正在本地处理常见问题解答页面。我创建我需要的任何插件/模板等。然后,在本地,我继续将插件添加到页面、调试、修改任何内容。现在是我将其部署到生产环境的时候了。

我只能重新做所有工作,复制/粘贴内容并重建常见问题页面,还是有其他方法?我想到的事情:

  • 创建表示结构/内容的数据迁移

  • 将生产数据库同步到开发数据库,​​进行更改并在停机窗口期间将其全部推回。

在 Django CMS 社区中是否有其他解决方案来处理这种事情?

数据迁移似乎是最好的方法,但我想我会要求确保我没有遗漏任何东西。

【问题讨论】:

  • 这也是我想知道的。我从数据库中转储数据并加载到服务器上,复制了media 目录,但无法使用文件重新创建插件。进一步的问题是我无法以编程方式传输或附加的 apphook。所以,你并不孤单!

标签: django-cms


【解决方案1】:

我不知道有任何开箱即用的解决方案可以解决这个问题。数据迁移似乎很好,但如果您打算将其集成到实际的迁移框架中,我会担心它与数据库的状态过于耦合(即,如果您将内容插入特定的页面 ID)。

我们在项目中一直在做的是创建一个特殊的应用程序,为管理 CLI 提供额外的命令。然后,您可以将迁移与数据填充分开。实时部署插件结构后,您可以简单地运行命令来填充数据库。

播种数据后,您可以简单地禁用/完全删除临时应用程序,而不会对您的主应用程序产生任何影响 - 与在迁移框架中保持紧密耦合的数据填充相比,这会浪费空间并紧密耦合数据库迁移到您的数据库内容。

【讨论】:

  • 您是在正式的数据迁移中编写脚本还是执行类似于 dumpdata(实际上不是 dumpdata)的操作,只是一些可以重构和重放的序列化格式?
  • 实际上,我会使用抽象——因为您事先知道插件的字段是什么,您可以遍历占位符内容,然后创建具有正确关系的新 CMSPlugin 实例等。虽然我可以想象一下,对于一次性的,这可能有点太多的工作,更直接的序列化就足够了
  • 是的,这个流程正是我一直在努力的。很高兴看到验证。迭代占位符,并在目标上重建插件。
  • 我通常更喜欢这种方式 - 因为这样可以确保执行所有代码触发器等 - 而且通常比真正确定手术提取和移植数据到不同的db 会工作
  • 如果你想迁移一个附加了一个apphook的整个页面怎么办?上传的文件怎么样,比如图片或轮播插件?您如何确保它们被正确转移?另外,我想看看一个最小的例子,一个包含所有插件和内容的占位符如何以编程方式移动到另一个数据库。
猜你喜欢
  • 1970-01-01
  • 2019-07-14
  • 1970-01-01
  • 2021-07-31
  • 1970-01-01
  • 2010-10-22
  • 1970-01-01
  • 1970-01-01
  • 2017-01-25
相关资源
最近更新 更多