撇号 CMS 数据库迁移
Apostrophe CMS db migrations
将数据库从 dev 部署到 prod 并在 prod 进行一些更改后将其撤回的正确方法是什么?现在我只是将 mongo 转储保留在存储库中,但我认为应该有更正确的方法。
复制数据库不是官方内置功能,但我了解您所说的工作流程。在您将站点移交给您的客户或使其在 public 上线时,您通常会希望将现有数据库推送到您的生产服务器。以后,您会经常想将它复制到您的开发计算机上。
这里有 sync-up
和 sync-down
个脚本:
https://github.com/apostrophecms/apostrophe-boilerplate/tree/master/scripts
这些脚本假定您正在使用我们的 Stagecoach 部署系统,并且 mongodb 直接在生产服务器上 运行 并且将接受来自其自身(来自本地主机)的连接而无需密码。这些假设可能不适合您,因此您可能需要根据您的需要调整这些脚本。
不过,正如您将在这些简短的脚本中看到的那样,基本答案是(对于这个故事,我使用的是 "sync down from production to development" 用例):
使用 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/uploads
。
rsync -av --delete $rsyncDestination:/opt/stagecoach/apps/$projectName/uploads/ ./public/uploads
请参阅脚本了解变量的初始化方式。
如果您在 S3 中托管您的生产内容,那么您可以使用 AWS CLI,特别是 aws s3 sync
命令。
希望对您有所帮助!
将数据库从 dev 部署到 prod 并在 prod 进行一些更改后将其撤回的正确方法是什么?现在我只是将 mongo 转储保留在存储库中,但我认为应该有更正确的方法。
复制数据库不是官方内置功能,但我了解您所说的工作流程。在您将站点移交给您的客户或使其在 public 上线时,您通常会希望将现有数据库推送到您的生产服务器。以后,您会经常想将它复制到您的开发计算机上。
这里有 sync-up
和 sync-down
个脚本:
https://github.com/apostrophecms/apostrophe-boilerplate/tree/master/scripts
这些脚本假定您正在使用我们的 Stagecoach 部署系统,并且 mongodb 直接在生产服务器上 运行 并且将接受来自其自身(来自本地主机)的连接而无需密码。这些假设可能不适合您,因此您可能需要根据您的需要调整这些脚本。
不过,正如您将在这些简短的脚本中看到的那样,基本答案是(对于这个故事,我使用的是 "sync down from production to development" 用例):
使用
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/uploads
。
rsync -av --delete $rsyncDestination:/opt/stagecoach/apps/$projectName/uploads/ ./public/uploads
- 也使用
请参阅脚本了解变量的初始化方式。
如果您在 S3 中托管您的生产内容,那么您可以使用 AWS CLI,特别是 aws s3 sync
命令。
希望对您有所帮助!