提交从Heroku到Github / BitBucket的更改

问题描述

我正在使用Strapi我的内容管理系统,该系统托管在Heroku上。但是,我希望能够直接在Heroku服务器上编辑内容,并在以后需要进行更广泛的CMS开发时将这些更改拉到我的本地环境中。

有关如何从本地-> Heroku部署更改的详细记录,但并非相反。 有人可以指出我正确的方向吗?

解决方法

不确定您要问什么,但我要尝试...

首先让我们了解Strapi中的两个主要运动部分。

  1. 内容类型生成器(使用内容类型生成器创建内容类型,例如书籍)
  • 1.1)您应该始终在您的内容中使用content-type-builder创建内容类型 本地环境,然后将其推送到您的主机(Heroku) Strapi也建议这样做,并且为了强制实施,他们已禁用内容- 当NODE_ENV设置为生产时,类型生成器插件。
  1. 内容类型数据(使用上面创建的books-content-type创建书籍)
  • 2.1)在编写此Strapi v3.1.4时,Strati无法为您在环境之间移动内容类型数据。即。如果您创建书籍内容类型,并使用它在本地主机环境中创建书籍,则该书籍将仅存在于本地环境中。

如果确实需要/想要在环境之间移动内容类型数据,则需要开发一种迁移机制,该机制会将数据从一个数据库播种到另一个数据库。

作为一个粗略的例子: 在您的./config/functions/bootstrap.js文件中,您可以创建一个模块,该模块通过公共api从heroku实例获取内容类型数据并将其种子到本地数据库中。 为此,您需要在heroku应用程序中设置内容类型的读取访问权限。

bootstrap.js示例

const productionSeed= require('./seeds');
module.exports = async () => {
    if (process.env.NODE_ENV == "development") {
    await productionSeed.seedData();
    }
};

例如seed.js

module.exports.seedData= async () => {
    try {
        //Sudo code:
        var books = GET http://{heroku-app-name}/books
    
        foreach(book in books){
            await strapi.services.books.create({
            name: book.name;
        });
    } catch (error) {
        console.error(error);
    }
};

当用例很简单时,这是很长的路要走。 应该使用可以以相同方式调用和使用的迁移脚本来迁移生产数据库。

如果要移动实际的内容类型,则必须克隆heroku git存储库,可以使用heroku git:clone -a {app name}

NB Heroku应用程序的Git存储库仅用于部署目的。正式不支持从此存储库进行克隆是一项功能,应仅在不得已的情况下尝试这样做。

您可以在此处找到更多信息:https://devcenter.heroku.com/articles/git-clone-heroku-app