我在我的1and1 VPS端口27017:27017上运行了mongodb docker容器。容器的名称是mongo。我需要连接到已经运行的容器,并导入11GB的超大JSON文件(备份数据库)。有人知道我该怎么做吗?我尝试查看其他人的问题,但没有一个人给出正确的答案。 JSON文件也已经上传到VPS,所以我猜我需要包括正确的路径吗?任何帮助表示赞赏。
答案 0 :(得分:0)
可能合适的解决方案:
docker run --name mongodb mongo:latest
大文件位于主机/backup/mongo/largefile.json
上此路径内,为了将该文件安装在容器中,您需要启动一个新容器,而不是已经运行的容器,因此您可以自由地停止旧容器,然后使用以下命令运行新容器:
docker stop mongodb
docker rm mongodb
docker run --name mongodb -v /backup/mongo:/home/ mongo:latest
以上命令将停止名为mongodb
的容器,然后将其删除,然后它将创建一个具有相同名称的新容器并将此目录/backup/mongo
装入此路径/home
在容器内。
最后,如果您有一个特定的Shell脚本,它将在装入文件后为您执行导入,则可以将此脚本添加到/docker-entrypoint-initdb.d/
中,并且它将在容器第一次启动后执行。现在最终的命令将是(根据需要修改命令):
此命令不为
/data/db
提供任何数据持久性,因此您需要使用-v
为其创建卷
docker run --name mongodb -v /backup/mongo:/home/ -v /path/to/my/script:/docker-entrypoint-initdb.d/ mongo:latest
要确认大文件位于容器内,可以使用以下命令(假设容器名称为mongodb):
docker exec -it mongodb bash
从本地计算机连接到VPS上的容器。正如您在评论中提到的那样,您可以使用计算机中的gui应用程序进行导入。在这种情况下,您需要考虑以下因素:
mongod --bind_ip 0.0.0.0
命令末尾的docker run
来告诉它公开,但是我不建议您遵循此方法,因为它不安全。或者,您可以使用SSH隧道将您连接到容器IP。我的最终建议是采用第一种方法,因为该文件已在VPS上可用,而无需再次上传。