gpt4 book ai didi

mongodb - 连接到VPS上的MongoDB Docker镜像并导入大型JSON文件

转载 作者:行者123 更新时间:2023-12-02 19:57:40 30 4
gpt4 key购买 nike

我在1and1 VPS端口27017:27017上运行了mongodb docker容器。容器的名称是mongo。我需要连接到已经运行的容器,并导入11GB的超大JSON文件(备份数据库)。有人知道我该怎么做吗?我尝试查看其他人的问题,但没有一个人给出正确的答案。 JSON文件也已经上传到VPS,所以我猜我需要包括正确的路径吗?任何帮助表示赞赏。

最佳答案

可能适合的解决方案:

  • 使用卷挂载大文件。 假设您正在使用以下命令运行docker容器
  • 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/中,并且它将在容器第一次启动后执行。现在最终的命令将是( 修改命令,如您所见适合):

    This command does not provide any data persistence to /data/db so you need to create a volume for it using -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应用程序进行导入。在这种情况下,您需要考虑以下因素:
  • 从Mongo 3.6开始,它将不会公开显示。因此,您需要使用mongod --bind_ip 0.0.0.0命令末尾附加的docker run告诉它公开,但是我不建议您遵循此方法,因为它不安全。或者,您可以使用SSH隧道将您连接到容器IP。


  • 我的最终建议是采用第一种方法,因为该文件已在VPS上提供,而无需再次上传。

    关于mongodb - 连接到VPS上的MongoDB Docker镜像并导入大型JSON文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56799930/

    30 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com