Подключитесь к образу MongoDB Docker на VPS и импортируйте большой файл JSON - PullRequest
0 голосов
/ 28 июня 2019

У меня есть док-контейнер mongodb, работающий на моем VPS-порту 1 и 1 27017: 27017.Название контейнера - Монго.Мне нужно подключиться к этому уже запущенному контейнеру и импортировать его в очень большой файл JSON (резервная копия дБ) объемом 11 ГБ.Кто-нибудь знает, как я мог сделать это, пожалуйста?Я пытался посмотреть на вопросы других людей, но ни один из них не дал правильного ответа.Кроме того, файл JSON уже загружен в VPS, так что я думаю, мне нужно указать правильный путь к этому?Любая помощь приветствуется.

1 Ответ

0 голосов
/ 28 июня 2019

Возможные решения, которые могут подойти:

  • Монтирование большого файла с использованием томов. Допустим, вы используете следующую команду для запуска док-контейнера
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 внутри контейнера.Наконец, если у вас есть специальный сценарий оболочки, который будет выполнять импорт для вас после монтирования файла, вы можете добавить этот сценарий в /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 .Как вы упомянули в своем комментарии, вы можете использовать приложение графического интерфейса, расположенное на вашем компьютере, для выполнения импорта.В этом случае вам нужно учесть следующее:

    • Начиная с Mongo 3.6, оно не будет открыто опубликовано.поэтому вы должны указать, что он должен быть открыт, используя mongod --bind_ip 0.0.0.0, добавленный в конец команды docker run, но я не рекомендую следовать этому методу, поскольку он небезопасен.Или вы можете использовать SSH туннелирование, которое соединит вас с IP-адресом контейнера.

Моя последняя рекомендация - следовать первому методу, так как файл уже доступен на VPS.и нет необходимости загружать его снова.

...