🐳 使用 Docker 执行 mongodump 和 mongorestore
使用 Docker
使用 Docker Compose
由 Mux 赞助的 DEV 全球展示挑战赛:展示你的项目!
嗨!今天才知道怎么恢复和导出 MongoDB 容器。诀窍在于禁用伪终端分配。否则,备份文件会被添加额外的字符,导致 mongorestore 无法正常工作。
使用 Docker
使用 Docker 时,伪终端分配默认是禁用的,但恢复命令需要使用 -i(交互式)选项。
mongodump
-
无授权:
docker exec <mongodb container> sh -c 'mongodump --archive' > db.dump -
已验证:
docker exec <mongodb container> sh -c 'mongodump --authenticationDatabase admin -u <user> -p <password> --db <database> --archive' > db.dump
mongorestore
-
无授权:
docker exec -i <mongodb container> sh -c 'mongorestore --archive' < db.dump -
已验证:
docker exec -i <mongodb container> sh -c 'mongorestore --authenticationDatabase admin -u <user> -p <password> --db <database> --archive' < db.dump
使用 Docker Compose
使用 docker-compose 时,每次都需要使用 -T 参数显式地禁用伪终端分配:
mongodump
docker-compose exec -T <mongodb service> sh -c 'mongodump --archive' > db.dump
mongorestore
docker-compose exec -T <mongodb service> sh -c 'mongorestore --archive' < db.dump
就这些啦!✨🎉
现在,你可以随意编写脚本并将其添加到你的流程中了。