Apostrophe CMS db迁移

问题描述 投票:1回答:1

将db从dev部署到prod的正确方法是什么,并在prod中进行一些更改后将其撤回?现在我只是将mongo转储保存在存储库中,但我认为应该有一个更正确的方法。

apostrophe-cms
1个回答
1
投票

复制数据库不是官方的内置功能,但我了解您正在谈论的工作流程。在您将网站交给客户或为公众提供服务的时候,您通常会希望将现有数据库推送到生产服务器。之后,您经常需要将其复制到开发计算机。

这里有sync-upsync-down脚本:

https://github.com/apostrophecms/apostrophe-boilerplate/tree/master/scripts

这些脚本假设您正在使用我们的Stagecoach部署系统,并且mongodb直接在生产服务器上运行,并且将接受来自其自身(来自localhost)的连接而无需密码。这些假设可能不适合您,因此您可能需要根据需要调整这些脚本。

然而,正如您将在这些简短的脚本中看到的那样,基本的答案是(对于这个故事,我使用的是“从生产到开发同步”用例):

  • 使用mongodump在远程生产服务器上创建数据库的可移植副本。 rsync下来并使用mongorestore来恢复它。 ssh $remoteSSH mongodump -d $dbName -o /tmp/mongodump.$dbName && rsync -av $rsyncDestination:/tmp/mongodump.$dbName/ /tmp/mongodump.$dbName && ssh $remoteSSH rm -rf /tmp/mongodump.$dbName && mongorestore --noIndexRestore --drop -d $dbName /tmp/mongodump.$dbName/$dbName 使用rsync也可以复制public/uploadsrsync -av --delete $rsyncDestination:/opt/stagecoach/apps/$projectName/uploads/ ./public/uploads

有关如何初始化变量的信息,请参阅脚本。

如果您在S3中托管生产内容,则可以使用AWS CLI,尤其是aws s3 sync命令。

希望这有用!

© www.soinside.com 2019 - 2024. All rights reserved.